当 AngularJS 因错误“ Argument 'MyCtrl' is not a function, got undefined ”而崩溃时,找到原因可能有点困难。
这里我想做一个“检查表”,出错时应该检查什么
当 AngularJS 因错误“ Argument 'MyCtrl' is not a function, got undefined ”而崩溃时,找到原因可能有点困难。
这里我想做一个“检查表”,出错时应该检查什么
<script src='path/to/controllers.js'></script>
有几种模式:
app.controller('MyCtrl', ['$scope', function ($scope) {...}])
app.controller('MyCtrl', function ($scope) {...})
var MyCtrl = function ($scope) {...})
angular.module('app', ['app.sources']);
如果你定义module多时间,您应该按以下顺序定义它:
angular.module('app.sources', []);
(与[ ]
)
angular.module('app.sources');
(没有[ ]
)
重要:声明顺序很重要 -[ ]
应该先定义。
angular.module('app.sources', []);
检查您的 'ng-app'
. 最好只使用其中一个名称为 like ng-app='app'
(换句话说,不要定义多个未命名的 ngApp 指令)
您的控制器的语法是否适合您的 AngularJS 版本?
(Angular 1.0.x和1.2.x及更高版本中的定义存在差异。对于大于1.3.x 的Angular 版本,您不能声明全局构造函数并将其与 ng-controller 一起使用)
如果您使用ng-controller
with “controller as” 语法,请务必检查控制器的名称是否正确。
我的情况:
//controller register
angular.module("myApp").controller("someController", SomeController)
//in my code
<div ng-controller="SomeController as vm"></div>
注意我用的ng-controller="SomeController as vm"
,哪里SomeController
有大写S
。它应该是小写的,s
因为我就是这样注册的。
因此,请检查您的控制器名称是否正确。