一尘不染

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

javascript

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

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


阅读 214

收藏
2020-05-01

共1个答案

一尘不染

  1. 是否通过HTML连接了带有“ MyCtrl”的文件 ?(检查是否合并或丑化文件,请检查两次)

  2. 是否正确定义了“ MyCtrl”

有几种模式:

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

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

var MyCtrl = function ($scope) {...})
  1. 在正确的模块中定义了“ MyCtrl”吗?
  2. 是否将“ MyCtrl’s”模块添加到应用程序依赖项中

    angular.module(‘app’, [‘app.sources’]);

  3. 如果你定义模块 时间,您应该 按以下顺序定义它

    • 首先定义应该像

    angular.module(‘app.sources’, []);

(带有 [ ]

  • 随后的定义应该像

    angular.module(‘app.sources’);

(无 [ ]

重要提示 :声明顺序很重要- [ ] 首先应定义。

  1. 检查 模块 定义一次 。您可能忘记复制粘贴后重命名模块。检查src中的字符串,例如

    angular.module(‘app.sources’, []);

  2. 检查您的 'ng-app'。最好只使用其中一个名称,例如ng-app='app'(换句话说,不要定义多个未命名的ngApp指令)

  3. 控制器的语法 是否对您的AngularJS版本正确

(Angular 1.0.x1.2.x 及更高版本中的定义有所不同。当Angular版本大于 1.3.x时
,您无法声明全局构造函数并与ng-controller一起使用)

2020-05-01