Angularjs Uncaught Error:[$ injector:modulerr]迁移到V1.3时

Nak*_*kib 13 javascript angularjs angularjs-service angularjs-scope angularjs-controller

我正在学习Angular.js,我无法弄清楚这个简单的代码有什么问题.它看起来很好,但给我跟随错误.

**Error**: Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.14/$injector/modulerr?p0=app&p1=Error%3A%20…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381)
Run Code Online (Sandbox Code Playgroud)

在添加之前(我只是保留它)它给了我以下错误.这是为什么?ng-app="app"ng-app

Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=Ctrl&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417
    at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)
    at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)
    at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65
    at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)
    at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)
Run Code Online (Sandbox Code Playgroud)
<!doctype html>
    <html ng-app="app">
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>

      </head>
      <body>
        <div ng-controller="Ctrl">
          <input ng-model="name">
          <h1>{{name}}</h1>
          <h2>{{age}}</h2>
        </div>

         <script>
          var Ctrl = function($scope)
           {
              $scope.age = 24;
           };
          </script>


      </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

Pan*_*kar 15

在AngularJS版本1.3之后,全局控制器函数声明被禁用

您需要先创建一个AngularJS模块,然后将所有组件附加到该特定模块.

function Ctrl($scope) {
    $scope.age = 24;
}

angular.module('app', [])
    .controller('Ctrl', ['$scope', Ctrl]);
Run Code Online (Sandbox Code Playgroud)

特别针对您的情况,AngularJS存在一些问题1.3.14(将其降级为1.3.13正常工作).虽然我更喜欢你使用角度1.2.27 AngularJS 1.6.X,这是更稳定的版本和AngularJS的最新版本.

工作Plunkr

更新:

您可以通过允许全局控制器声明将当前代码转换为工作状态angular.config.但这不是运行角度应用程序的正确方法.

function Ctrl($scope) {
    $scope.age = 24;
}

angular.module('app', [])
    .config(['$controllerProvider',
        function ($controllerProvider) {
            $controllerProvider.allowGlobals();
        }
    ]);
Run Code Online (Sandbox Code Playgroud)


Har*_*uja 7

我有时会陷入这个问题.按顺序检查以下内容: -

  1. angular.js脚本的路径是正确的(无论您是从本地源还是作为外部资源在HTML中调用它).

  2. 接下来,一旦您的angular.js正确,请检查您的应用是否已初始化.

    var app=angular.module('app',[])//在你的app.js文件中

    <body ng-app="app">//在你的HTML中

  3. 接下来使用应用程序注册您的控制器并传递所有必要的注射

    app.controller('myCtrl',function(){});

  4. 在你的html文件中调用你的javascript文件

    <script src="app.js"></script>


Ari*_*yen 6

你必须定义你的控制器

var app = angular.module('app', []);

app.controller('Ctrl', ['$scope',function($scope) {
  $scope.age = 24;
}]);
Run Code Online (Sandbox Code Playgroud)

  • 你添加'ng-app ="app"`后,你得到的是同样的错误吗? (2认同)