0

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

4

1 回答 1

3

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

另外两个注意事项:

  1. 没有必要return module.TodoItem......你可以分配module.TodoItem = ...,它将在application.core命名空间上可用。

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

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

于 2012-09-07T00:37:51.437 回答