我有以下代码(代码是从CoffeeScript生成的):
console.log('test1');
application.module('core', function(module, application, Backbone, Marionette, $, _) {
console.log('test2');
return module.TodoItem = (function(_super) {
__extends(TodoItem, _super);
function TodoItem() {
return TodoItem.__super__.constructor.apply(this, arguments);
}
return TodoItem;
})(Backbone.Model);
});
在我看来https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.module.md看起来这个代码应该可行,但看起来核心模块的功能永远不会被执行(test1打印到控制台,但test2没有)。有什么我想念的吗?
答案 0 :(得分:3)
在模块启动之前,模块的定义功能不会执行。这可以通过调用application.start()
并让应用程序启动所有模块,或通过调用application.module('core').start()
直接启动模块来实现。
另外两个注释:
无需return module.TodoItem
...您只需指定module.TodoItem = ...
即可在application.core
命名空间中使用。
看起来您的TodoItem只是从Backbone.Model扩展而来。做module.TodoItem = Backbone.Model.extend({...})
会更像是骨干惯用语。
我猜这个JavaScript的结构,以及我刚刚指出的两个项目,你是否正在使用CoffeeScript来生成这个?如果是这样,请忽略这两项,因为您将无法更改它们。