【问题标题】:Angular js- Error: ng:areq Bad Argument-Angular js-错误:ng:areq Bad Argument-
【发布时间】:2015-11-30 10:07:52
【问题描述】:

我看到有几个关于这个错误的问题,但我没有找到我的案例的答案。

我是 Angular 新手,开始构建小应用程序。

<!doctype html>
<html lang="en" ng-app>
<head>
  <meta charset="UTF-8">
  <title>Angular Demo</title>
  <script src="lib/angular/angular.min.js"></script>


</head>
<body>
<div ng-controller =" MyController">
  <h1>{{player.name}}</h1>
</div>
<script>
  function MyController($scope) {
    $scope.player = {
      'name': 'Eran Zahavi',
      'number': '7',
      'position': 'link'
    }
  }
</script>
</body>
</html>

当我尝试运行它时,我得到了上面的错误--> 错误:[ng:areq]http://errors.angularjs.org/1.4.3/ng/areq?p0=MyController&p1=not%20a%20function%2C%20got%20undefined

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    如果你指的是 Angular 1.3 以上版本,你应该以不同的方式声明控制器,

    var newApp = angular.module('newApp', []);
    newApp.controller('MyController', function($scope){
    
       $scope.player = {
          'name': 'Eran Zahavi',
          'number': '7',
          'position': 'link'
       }
    });
    

    这里是Plunker

    【讨论】:

      【解决方案2】:

      从 Angular 1.4.x 开始,您无法全局定义控制器。

      你必须在模块内声明控制器。

      这样

      <!doctype html>
      <html lang="en" ng-app="app">
      
          <head>
              <meta charset="UTF-8">
              <title>Angular Demo</title>
              <script src="lib/angular/angular.min.js"></script>
          </head>
      
          <body>
              <div ng-controller=" MyController">
                   <h1>{{player.name}}</h1>
      
              </div>
              <script>
                  var app = angular.module("app", []);
                  app.controller("MyController", function($scope) {
                      $scope.player = {
                          'name': 'Eran Zahavi',
                              'number': '7',
                              'position': 'link'
                      }
                  });
              </script>
          </body>
      
      </html>
      

      JSFIDDLE

      【讨论】:

        【解决方案3】:

        你可以试试this

        <body ng-app="">
        <div ng-controller ="MyController">
          <h1>{{player.name}}</h1>
        </div>
        <script>
          function MyController($scope) {
            $scope.player = {
              'name': 'Eran Zahavi',
              'number': '7',
              'position': 'link'
            }
          }
        </script>
        </body>
        

        【讨论】: