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

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

当我打电话时 App.module("HeaderApp").start() 事件侦听器不会触发,但是如果我手动触发该事件,它将运行。

正在阅读 木偶文档 看起来这应该可行。有任何想法吗?

有帮助吗?

解决方案

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

要防止自动启动,请设置 startWithParent 为假(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....
    });
});

然后它应该按您的预期工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top