首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >How to find a reason AngularJS "Argument 'MyCtrl‘is not a function,got“

How to find a reason AngularJS "Argument 'MyCtrl‘is not a function,got“
EN

Stack Overflow用户
提问于 2014-11-07 17:13:22
回答 2查看 9.5K关注 0票数 18

当AngularJS崩溃并出现错误“参数'MyCtrl‘不是函数,未定义的函数”时,找出原因可能有点困难。

这里我想做一个“检查表”,当你遇到错误时,你应该检查什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-07 17:19:38

是否通过html连接带有'MyCtrl‘的

  1. Is文件?(如果合并或丑化文件,请检查两次)

代码语言:javascript
复制
<script src='path/to/controllers.js'></script>

  1. Is 'MyCtrl‘定义的correctly

有几种模式:

代码语言:javascript
复制
app.controller('MyCtrl', ['$scope', function ($scope) {...}])

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

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

右module?

  • Is "MyCtrl's“模块中定义的
  1. Is 'MyCtrl‘已添加到应用程序dependencies

代码语言:javascript
复制
angular.module('app', ['app.sources']);

  1. 如果您多次定义模块,则应在此中定义它

代码语言:javascript
复制
- First define should be like 

代码语言:javascript
复制
angular.module('app.sources', []);

(使用[ ])

  • 后续定义应该类似于

代码语言:javascript
复制
angular.module('app.sources');

(没有[ ])

重要的:声明顺序很重要--应该先定义[ ]

  1. 检查模块是否为,只定义一次。您可能忘记了在复制-粘贴后重命名模块。检查src中是否有类似

的字符串

代码语言:javascript
复制
angular.module('app.sources', []);

  1. Check your 'ng-app'。最好只使用其中一个名称,如ng-app='app' (换句话说,不要定义多个未命名的ngApp directives)
  2. Is您的控制器的语法正确适用于您的AngularJS版本?

(在Angular 1.0.x和1.2.x及更高版本中的定义存在差异。对于高于1.3.x的Angular版本,不能声明全局构造函数并将其与ng-一起使用。)

票数 47
EN

Stack Overflow用户

发布于 2015-08-20 17:24:03

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

我的案例:

代码语言:javascript
复制
//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,因为这是我注册它的方式。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26797756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档