Angular-Sprout:module.controller() 函数未定义;无法添加控制器

Posted

技术标签:

【中文标题】Angular-Sprout:module.controller() 函数未定义;无法添加控制器【英文标题】:Angular-Sprout: module.controller() function is not defined; unable to add controller 【发布时间】:2014-11-14 05:05:38 【问题描述】:

我一直在使用angular-seed 作为入门项目,尽管它在过去一个月左右改变了它的应用程序结构,但我还是决定看看angular-sprout。

Angular-sprout 没有更新的 index-async 页面,所以我决定分叉代码并着手处理它。我已经正确连接了所有东西,但是现在当我尝试添加控制器时(通过 module.controller() 函数,我收到一条错误消息,指出 module.controller 未定义。

当我在我的index-async.html 页面上将angular.module('myModule') 登录到控制台时,我得到一个具有正确方法的角度对象 - filter()service()provider() 等 - 但controller 不是那里:

module Object 
    _invokeQueue: Array[0], 
    _runBlocks: Array[0], 
    requires: Array[0], 
    name: "application.controllers", 
    provider: function…
    _invokeQueue: Array[0]
    _runBlocks: Array[0]
    config: function ()c[d||"push"]([a,b,arguments]);return g
    constant: function ()c[d||"push"]([a,b,arguments]);return g
    directive: function ()c[d||"push"]([a,b,arguments]);return g
    factory: function ()c[d||"push"]([a,b,arguments]);return g
    filter: function ()c[d||"push"]([a,b,arguments]);return g
    name: "application.controllers"provider: function ()c[d||"push"]([a,b,arguments]);return g
    requires: Array[0]run: function (a)d.push(a);return this
    service: function ()c[d||"push"]([a,b,arguments]);return g
    value: function ()c[d||"push"]([a,b,arguments]);return g
    __proto__: Object

(对于糟糕的格式感到抱歉。我会尝试获得更好的控制台副本。)

当我从 index-async 记录 controller 时:

controller undefined details-controller.js:13

当我运行 index-async 页面时会发生这种情况。但是,在常规索引页面上,controller 被正确定义并给了我一个角度方法:

controller function () 
    invokeQueue[insertMethod || 'push']([provider, method, arguments]);
    return moduleInstance;
 details-controller.js:13

以前有人遇到过这种情况吗?对于它的价值,似乎controller 是我缺少的唯一模块方法,我完全不知道为什么会这样。

【问题讨论】:

【参考方案1】:

事实证明......我决定检查我正在使用的 Angular-loader 的版本。显然,角度加载器 v1.0.0rc1 似乎会导致此错误,即使我使用的是该版本的 AngularJS。我将加载器更新到更高版本,似乎由于某种原因解决了这个问题。

请注意,代码本身没有问题。事实证明,根据documentation,加载程序会覆盖angular.module(),这似乎是我遇到的问题的根源。

为此,我必须克隆 angular-seed 并运行 npm run update-index-async 以获取最新版本的加载器代码。将其复制到新芽项目中似乎可以解决 Angular 1.0 的问题。 (现在,为了让它与最新版本的 Angular 一起工作。)如果您使用加载器的脚本标签(不直接将其注入到您的 html 页面中),您可能只需获取最新版本并从你的文件。

【讨论】:

以上是关于Angular-Sprout:module.controller() 函数未定义;无法添加控制器的主要内容,如果未能解决你的问题,请参考以下文章