我目前正在用 Backbone 和 Marionette 重写一个旧应用程序。在我的模块文件 sls.module.insight.js 中:
spls.module('Insight', {
startWithApp: false,
define: function(self, spls, Backbone, Marionette, $, _) {
self.start = function () {
console.log('Insight started!');
}
self.addInitializer(function() {
console.log('Insight instantiated!');
});
}
});
我正在尝试使用 start() 方法,因为我认为这将是等待模块的 start() 时使用的正常方法。(它只被初始化一次,所以我不能使用初始化程序。但还有什么?)在第二次调用 spls.module('Insight').start(); 我收到两个“洞察力开始!” 消息。为什么是这样?
有没有更好的方法来解决这个问题?
有关我想要实现的目标的更多信息:我刚开始使用 Marionette,因此对模块的作用以及它们交互的方式还没有深入了解。我想要实现的基本上是一个主要的应用程序(作品),它通过路由器打开页面(模块)。目前我正在打电话
Spls.module('Insight').start();
来自路由器,但我不知道如何设计模块本身。初始化程序似乎只在第一个 .start() 上被调用,因此模块不知道何时显示它的内容。我应该像这样使用事件聚合器吗?
// router
Spls.module('Insight').start();
Spls.vent.trigger('insight:show');
// module
Spls.vent.on('insight:show', function () { /* show index */ });
我基本上需要更多关于如何使用模块的信息,我找不到任何关于这方面的适当工作流程的好信息。
再次感谢!