如何找到原因AngularJS"自变量'MyCtrl'不是一个函数,未定义”;
How to find a reason AngularJS "Argument 'MyCtrl' is not a function, got undefined"
当AngularJS崩溃并出现错误"参数'MyCtrl'不是函数,未定义"时,要找到原因可能有点困难。
在这里,我想做一种"检查列表",当收到错误
- 带有"MyCtrl"的文件是否通过html连接?(如果您的文件有凹凸,请检查两次)
<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'
。最好只使用其中一个名称类似ng-app='app'
的指令(换句话说,不要定义多个未命名的ngApp指令)控制器的语法是否适用于AngularJS版本?
(Angular1.0.x和1.2.x及更高版本中的定义存在差异。对于大于1.3.x
如果使用带有"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
的大写字母为S
。它应该是小写的s
,因为我就是这样注册的
因此,请检查您的控制器名称是否正确。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么