我已经创建了一个这样的木偶模块

App.module("HeaderApp", function (HeaderApp, App, Backbone, Marionette, $, _) {
    HeaderApp.on('start', function () {
        ...do something....
    });
});


当我调用App.module("HeaderApp").start()时,事件监听器不会触发,但是,如果我手动触发事件,它将运行。

读取marionette documentation似乎应该可以。有任何想法吗?

最佳答案

这很有可能是因为该模块会随着应用程序自动启动,因此在您注册事件侦听器时已经在运行。

为了防止自动启动,请将startWithParent设置为false(https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.module.md#preventing-auto-start-of-modules):

App.module("HeaderApp", function (HeaderApp, App, Backbone, Marionette, $, _) {
    HeaderApp.startWithParent = false;

    HeaderApp.on('start', function () {
        ...do something....
    });
});


然后,它应该会按预期工作。

10-06 08:26