根据Angular版本缺少Angular控制器

mic*_*ver 0 angularjs angularjs-scope

所以我有这个来源:

<!DOCTYPE html>
    <head>
    <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>
    <script>
        function commentController($scope) {
            $scope.reportComments = [{ Name:"Frank", Comment:"Booka" }, { Name:"Frank2", Comment:"Booka2" }];
        }
    </script>
    </head>
    <body>
        <div ng-app="" ng-controller="commentController">
            <ul>
              <li ng-repeat="c in reportComments">
                {{ c.Name + ', ' + c.comment }}
              </li>
            </ul>
        </div>      
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

而且效果很好.

但后来我将AngularJS的版本更改为1.3.0,我收到此错误:

错误:[ng:areq]参数'loadCommentsController'不是函数,未定义 http://errors.angularjs.org/1.3.7/ng/areq?p0=loadCommentsController&p1=not%20a%20function%2C%20got% 20undefined 在file:/// C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:63:12在assertArg(文件:/// C:/ Users/micah_000/Desktop/comment_testbed/js/angular. js:1575:11)在assertArgFn(file:/// C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:1585:3)的file:/// C:/ Users/micah_000/Desktop/comment_testbed/js/angular.js:8416:9 at file:/// C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:7590:34 atEach(file:/// C:/ Users/micy_000/Desktop/comment_testbed/js/angular.js:331:20)在compositeLinkFn(file:/// C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:7577:11)的compositeLinkFn(文件: ///C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:7073:13)at publicLinkFn(file:/// C:/Users/micah_000/Desktop/comment_testbed/js/angular.js:6952 :30)在file:/// C:/ Users/micah_000/Desktop/commen t_testbed/JS/angular.js:1449:27

为什么?

我的控制器功能如何定义?

这与本教程密切相关.如果一个简单的教程在发行版之间中断,它会使框架看起来像volatile/mercurial /不可靠.

Jef*_*ffB 5

在1.3.0中不推荐使用全局函数作为控制器的能力:https://github.com/angular/angular.js/issues/9662.除了简单(和不切实际)的演示之外,这个"功能"并没有真正意义.

您应该在Angular模块上定义控制器:

<!DOCTYPE html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
  <script>
        angular.module('test', [])
          .controller('commentController', function commentController($scope) {
                $scope.reportComments = [
                  { Name:"Frank", Comment:"Booka" }, 
                  { Name:"Frank2", Comment:"Booka2" }
                ];
           });
    </script>
</head>
<body>
    <div ng-app="test" ng-controller="commentController">
        <ul>
          <li ng-repeat="c in reportComments">
            {{ c.Name + ', ' + c.comment }}
          </li>
        </ul>
    </div>      
</body>
Run Code Online (Sandbox Code Playgroud)