Backbone.js 主干木偶模块

Backbone.js 主干木偶模块,backbone.js,marionette,Backbone.js,Marionette,我包含以下代码(代码由CoffeeScript生成): 在我看来,这段代码应该可以工作,但是核心模块的函数似乎从未执行过(test1打印到控制台,而test2没有)。我缺少什么吗?在模块启动之前,模块的定义函数不会执行。这可以通过调用application.start()并让应用程序启动所有模块来实现,也可以通过调用application.module('core').start()直接启动模块来实现 其他两项说明: 无需返回module.TodoItem。。。您只需分配module.TodoI

我包含以下代码(代码由CoffeeScript生成):


在我看来,这段代码应该可以工作,但是核心模块的函数似乎从未执行过(test1打印到控制台,而test2没有)。我缺少什么吗?

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

其他两项说明:

  • 无需
    返回module.TodoItem
    。。。您只需分配
    module.TodoItem=…
    ,它将在
    应用程序.core
    命名空间中可用

  • 看起来您的TodoItem只是从Backbone.Model扩展而来。做
    module.TodoItem=backbone.Model.extend({…})
    会更像主干习惯用法


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

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

    其他两项说明:

  • 无需
    返回module.TodoItem
    。。。您只需分配
    module.TodoItem=…
    ,它将在
    应用程序.core
    命名空间中可用

  • 看起来您的TodoItem只是从Backbone.Model扩展而来。做
    module.TodoItem=backbone.Model.extend({…})
    会更像主干习惯用法

  • 我根据这个JavaScript的结构,以及我刚才指出的两项,猜测您正在使用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);
    });