简单问题:为什么angular js无法正常工作?

我写了一段简单代码,使用了angular js,可是不知道为什么,程序并没有响应我的代码,代码如下:

<!DOCTYPE html>
<html ng-app>
    <head>
        <title>js </title>
       <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
        <table ng-controller="BasketCtrl">
            <tr><td>Item:</td><td>{{description}}</td></tr>
            <tr><td>cost:</td><td>{{cost}}</td></tr>
            <tr><td>qty:</td><td><input type="number" ng-model="qty"></td></tr>
            <tr><td>subtotal:</td><td>{{qty * cost|currency}}</td></tr>
        </table>
        <script src="./js/test1.js"></script>
    </body>
</html>

test1.js是我自己定义的一小段js:

function BasketCtrl($scope) {
    $scope.description='Singe ticket';
    $scope.cost=8;
    $scope.qty=1;
}

然而,似乎并不能正确运行:
图片描述

那个cdn是用的网上一个叫“菜鸟教程”所提供的,没有问题。
作为新手实在是不明白自己这段代码的问题所在,希望有朋友和大神可以指出,谢谢~

阅读 2.7k
3 个回答

你使用的Angular版本是1.4.6,而在Angular1.3.0及其后版本中,不允许直接在根节点上(rootScope)上挂载控制器,而你写的代码中是直接注册了控制器,所以控制台必定会报错。
解决方法是创建模块,即在HTML中设置ng-app="basket"
在JS中:

var app = angular.module('basket');                        // 创建的模块名,在ng-app中使用此名称
app.controller('BasketCtrl', function BasketCtrl($scope) { // 在模块上注册控制器
    $scope.description='Singe ticket';
    $scope.cost=8;
    $scope.qty=1;
})

HTML标签添加ng-app=‘myApp’。
js添加var myapp = angular.module('myApp'),试一试

//ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"
//这个你应该是没写
<div ng-app="myApp" ng-controller="myCtrl">
Full Name: {{firstName + " " + lastName}}
</div>

<script>
//angular.module创建应用,指明范围(上面的ng-app)和应用名字
var app = angular.module('myApp', []);
//在这个angular应用中创建控制器,可以创建多个
//不知道你的js是不是只贴了一半,看起来像是贴错了
app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题