Backbone Marionette模块

时间:2012-09-06 17:57:44

标签: backbone.js marionette

我有以下代码(代码是从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没有)。有什么我想念的吗?

1 个答案:

答案 0 :(得分:3)

在模块启动之前,模块的定义功能不会执行。这可以通过调用application.start()并让应用程序启动所有模块,或通过调用application.module('core').start()直接启动模块来实现。

另外两个注释:

  1. 无需return module.TodoItem ...您只需指定module.TodoItem = ...即可在application.core命名空间中使用。

  2. 看起来您的TodoItem只是从Backbone.Model扩展而来。做module.TodoItem = Backbone.Model.extend({...})会更像是骨干惯用语。

  3. 我猜这个JavaScript的结构,以及我刚刚指出的两个项目,你是否正在使用CoffeeScript来生成这个?如果是这样,请忽略这两项,因为您将无法更改它们。