如何找到原因AngularJS“参数'MyCtrl'不是函数,未定义”

当AngularJS因错误“ Argument'MyCtrl'不是一个函数,未定义 ”而崩溃时,寻找原因可能有点挑战。


在这里我想做一个“检查清单”,出现错误时应该检查什么


慕斯709654
浏览 710回答 2
2回答

HUX布斯

是否通过HTML连接了带有“ MyCtrl”的文件?(检查是否合并或丑化文件,请检查两次)<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's”模块添加到应用程序依赖项中?angular.module('app', ['app.sources']);如果你定义模块多时间,您应该按以下顺序定义它:首先定义应该像angular.module('app.sources', []);(带有[ ])随后的定义应该像angular.module('app.sources');(无[ ])重要提示:声明顺序很重要- [ ]首先应定义。检查模块仅被定义一次。您可能忘记复制粘贴后重命名模块。检查src中的字符串,例如angular.module('app.sources', []);检查您的 'ng-app'。最好只使用其中一个名称,例如ng-app='app'(换句话说,不要定义多个未命名的ngApp指令)您的AngularJS版本的控制器语法正确吗?(Angular 1.0.x和1.2.x及更高版本中的定义有所不同。当Angular版本大于1.3.x时,您不能声明全局构造函数并与ng-controller一起使用)

慕的地6264312

如果您使用ng-controllerwith和“ controller as”语法,请确保检查控制器的名称是否正确。我的情况://controller register&nbsp; &nbsp;&nbsp;angular.module("myApp").controller("someController", SomeController)//in my code<div ng-controller="SomeController as vm"></div>注意我用过的ng-controller="SomeController as vm",哪里SomeController有大写字母S。它应该是小写字母,s因为这就是我注册的方式。因此,请检查您的控制器名称是否正确。
打开App,查看更多内容
随时随地看视频慕课网APP