当AngularJS因错误“ Argument’MyCtrl’不是一个函数,未定义 ”而崩溃时,寻找原因可能有点挑战。
在这里我想做一个“检查清单”,出现错误时应该检查什么
是否通过HTML连接了带有“ MyCtrl”的文件 ?(检查是否合并或丑化文件,请检查两次)
是否正确定义了“ MyCtrl” ?
有几种模式:
app.controller('MyCtrl', ['$scope', function ($scope) {...}]) app.controller('MyCtrl', function ($scope) {...}) var MyCtrl = function ($scope) {...})
是否将“ MyCtrl’s”模块添加到应用程序依赖项中 ?
angular.module(‘app’, [‘app.sources’]);
如果你定义模块 多 时间,您应该 按以下顺序定义它 :
angular.module(‘app.sources’, []);
(带有 [ ] )
[ ]
随后的定义应该像
angular.module(‘app.sources’);
(无 [ ] )
重要提示 :声明顺序很重要- [ ] 首先应定义。
检查 模块 仅 被 定义一次 。您可能忘记复制粘贴后重命名模块。检查src中的字符串,例如
检查您的 'ng-app'。最好只使用其中一个名称,例如ng-app='app'(换句话说,不要定义多个未命名的ngApp指令)
'ng-app'
ng-app='app'
控制器的语法 是否对您的AngularJS版本正确 ?
(Angular 1.0.x 和 1.2.x 及更高版本中的定义有所不同。当Angular版本大于 1.3.x时 ,您无法声明全局构造函数并与ng-controller一起使用)