如何find一个理由AngularJS“参数”MyCtrl“不是一个函数,得到了未定义的”
当AngularJS崩溃时出现错误“ 参数”MyCtrl“不是一个函数,得到了未定义 ”这可能是有点挑战find一个原因。
在这里我想做一个“检查清单”,你应该检查什么时候出现错误
- 与“MyCtrl”通过HTML连接的文件 ? (如果您连接或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's”模块是否添加到应用程序依赖项 ?
 angular.module('app', ['app.sources']); 
- 
如果您多次定义您的模块,则应按以下顺序进行定义 : - 首先定义应该是这样的
 
 angular.module('app.sources', []); 
  (用[ ] ) 
- 后续的定义应该是这样的
 angular.module('app.sources'); 
  (没有[ ] ) 
  重要 :声明顺序很重要 – 用[ ]定义应该先去。 
- 检查该模块只定义一次 。 您可能忘记在复制粘贴后重命名模块。 检查src的string
 angular.module('app.sources', []); 
- 
检查你的 'ng-app'。 最好只使用其中的一个名称,如ng-app='app'(换句话说,不要定义多个未命名的ngApp指令)
- 
您的控制器的语法对于您的AngularJS版本是否正确 ? 
(Angular 1.0.x和1.2.x之间的定义有所不同,Angular版本大于1.3.x ,你不能声明一个全局的构造函数,并将其与ng-controller一起使用)
 如果您使用带“controller as”语法的ng-controller ,请务必检查控制器名称是否正确。 
我的情况:
 //controller register angular.module("myApp").controller("someController", SomeController) //in my code <div ng-controller="SomeController as vm"></div> 
 注意我使用了ng-controller="SomeController as vm" ,其中SomeController有一个大写SomeController S 应该用小写字母s因为这是我注册的方式。 
所以,检查你的控制器名称是否正确。