当AngularJS崩溃时出现错误" 参数' MyCtrl'不是一个功能,未定义"找到原因可能有点挑战。
在这里,我想制作一个"检查清单",出现错误时应该检查什么
答案 0 :(得分:47)
<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']);
如果您定义模块多次次,则应按此顺序定义:
angular.module('app.sources', []);
(使用 [ ]
)
angular.module('app.sources');
(不包含 [ ]
)
重要:声明顺序非常重要 - [ ]
的定义应该先行。
angular.module('app.sources', []);
检查您的 'ng-app'
。最好只使用其中一个名称为ng-app='app'
(换句话说,不要定义多个未命名的ngApp指令)
您的控制器的语法是否适合您的AngularJS版本?
(Angular 1.0.x 和 1.2.x 的定义与更高版本之间存在差异。当Angular版本大于 1.3.x ,您不能声明全局构造函数并将其与ng-controller一起使用)
答案 1 :(得分:1)
如果您正在使用ng-controller
和#34;控制器作为&#34;语法,请务必检查控制器的名称是否正确。
我的情况:
//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
,因为这是我注册的方式。
因此,请检查您的控制器名称是否正确。