Angularjs 未捕获错误:[$injector:modulerr] 迁移到 V1.3 时 [英] Angularjs Uncaught Error: [$injector:modulerr] when migrating to V1.3

查看:22
本文介绍了Angularjs 未捕获错误:[$injector:modulerr] 迁移到 V1.3 时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习 Angular.js,但我无法弄清楚这个简单的代码有什么问题.看起来不错,但给了我以下错误.

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

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

错误:[ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=Ctrl&p1=not%20a%20function%2C%20got%20undefined在错误(本机)在 https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417在 Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)在 tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)在 $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)在 https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65在 s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)在 A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)在 g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)在 g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)

<html ng-app="app"><头><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script><身体><div ng-controller="Ctrl"><输入 ng-model="名称"><h1>{{name}}</h1><h2>{{age}}</h2>

<脚本>var Ctrl = 函数($scope){$scope.age = 24;};</html>

解决方案

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

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

代码

function Ctrl($scope) {$scope.age = 24;}angular.module('app', []).controller('Ctrl', ['$scope', Ctrl]);

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

工作 Plunkr

更新:

您可以通过在 angular.config 中允许全局控制器声明来使当前代码处于工作状态.但这不是运行 Angular 应用程序的正确方法.

function Ctrl($scope) {$scope.age = 24;}angular.module('app', []).config(['$controllerProvider',函数($controllerProvider){$controllerProvider.allowGlobals();}]);

I am learning Angular.js and I am not able to figure out whats wrong with this simple code. It seems to look fine but giving me following error.

**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)

And before adding ng-app="app" (I was just keeping it as ng-app) it was giving me following errors. Why is that?

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)

<!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>

解决方案

After AngularJS version 1.3 global controller function declaration is disabled

You need to first create an AngularJS module & then attach all the components to that specific module.

CODE

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

angular.module('app', [])
    .controller('Ctrl', ['$scope', Ctrl]);

Specifically for your case, there is some issue with AngularJS 1.3.14 (downgrade it to 1.3.13 works fine). Though I'd prefer you to use angular 1.2.27 AngularJS 1.6.X, Which is more stable version & latest release of AngularJS.

Working Plunkr

UPDATE:

You could do your current code to working state by allow global controller declaration inside angular.config. But this isn't the correct way to run angular application.

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

angular.module('app', [])
    .config(['$controllerProvider',
        function ($controllerProvider) {
            $controllerProvider.allowGlobals();
        }
    ]);

这篇关于Angularjs 未捕获错误:[$injector:modulerr] 迁移到 V1.3 时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆