javascript - 如何找到原因 AngularJS "Argument ' MyCtrl' 不是函数,未定义“

标签 javascript angularjs

当 AngularJS 因错误“ Argument 'MyCtrl' is not a function, got undefined ”而崩溃时,找到原因可能有点困难。

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

最佳答案

  • 是否通过 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 指令)
  • 你的 Controller 的语法是 适合您的 AngularJS 版本 ?

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

    关于javascript - 如何找到原因 AngularJS "Argument ' MyCtrl' 不是函数,未定义“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26797756/

    相关文章:

    javascript - 如何隐藏 Angular Material mdToast?

    javascript - 使用 ui 路由器公开当前状态名称

    javascript - 在 Angular JS 中,如何将指令属性中的数据注入(inject)模板?

    javascript - 我有一个包含对象的多维数组,需要使用 javascript 计算每列的总和

    javascript - AngularJS $watch 仅在初始化时触发

    javascript - 如何在 docker 容器中使用 gulp 运行 livereload?

    javascript - 如何将 cookie 添加到 html 选择下拉框

    javascript - 无法更改为日期类型的输入分配的默认值 AngularJS

    javascript - 在对话框上使用 .replaceWith()。怎么了?

    javascript - 无论 promise 是否兑现,如何执行相同的操作?