为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

慕斯709654 2019-11-18 10:40:05

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


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


查看完整描述

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一起使用)


查看完整回答
反对 回复 2019-11-18
?
慕的地6264312

如果您使用ng-controllerwith和“ controller as”语法,请确保检查控制器的名称是否正确。


我的情况:


//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因为这就是我注册的方式。


因此,请检查您的控制器名称是否正确。


查看完整回答
反对 回复 2019-11-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信