javascript – 如何找到原因AngularJS“参数”MyCtrl’不是一个函数,没有定义“

当AngularJS崩溃时出现错误“参数”MyCtrl“不是一个函数,没有定义”找到原因可能有点挑战。

在这里我想做一个“检查表”,当你有错误时应该检查一下

>通过html连接’MyCtrl’的文件? (如果您连接或uglify您的文件,请检查两次)

<script src='path/to/controllers.js'></script>

>’MyCtrl’是否正确定义?

有几种模式:

app.controller('MyCtrl', ['$scope', function ($scope) {...}])

app.controller('MyCtrl', function ($scope) {...})

var MyCtrl = function ($scope) {...})

>“MyCtrl”是否在右侧模块中定义?
>“MyCtrl的”模块是否添加到应用依赖项?

angular.module('app', ['app.sources']);

>如果你多次定义你的模块,你应该按照这个顺序来定义你的模块:

>首先定义应该是

angular.module('app.sources', []);

(用[])

>后续定义应该是

angular.module('app.sources');

(不含[])

重要提示:声明顺序很重要 – []应该首先定义。

>检查该模块是否只定义一次。
复制粘贴后,您可能忘记重命名模块。检查src是否像字符串一样

angular.module('app.sources', []);

检查你的“应用程序”。更好地只使用其中一个名称,如ng-app =’app'(换句话说,不要定义多个未命名的ngApp指令)
>您的控制器的语法对于AngularJS版本是否正确?

(Angular 1.0.x和1.2.x及更高版本的定义有所不同,Angular版本大于1.3.x,您无法声明全局构造函数并与ng-controller一起使用)

翻译自:https://stackoverflow.com/questions/26797756/how-to-find-a-reason-angularjs-argument-myctrl-is-not-a-function-got-undefin

转载注明原文:javascript – 如何找到原因AngularJS“参数”MyCtrl’不是一个函数,没有定义“