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

时间:2014-11-14 05:05:39

标签: javascript angularjs controller angular-sprout

我一直在使用angular-seed作为入门项目,虽然它在过去一个月内改变了应用程序结构,但我决定查看angular-sprout

Angular-sprout没有更新的索引异步页面,所以我决定分叉代码并对其进行处理。我已正确连接所有内容,但现在当我尝试添加控制器时(通过module.controller()功能,我收到一条错误消息,指出module.controller未定义。

当我在angular.module('myModule')页面上将index-async.html记录到控制台时,我会使用正确的方法获得一个角度对象 - 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 个答案:

答案 0 :(得分:0)

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

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

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