是否有可能创建一个侦听骨干全局事件的require js插件,如果该事件被触发,则需要js启动?
这是我想用js http://jsfiddle.net/u2aej/
重现的场景我认为这看起来像这样。
require(['views/SubModule', 'editorLoaded!'], function (SubModule, editorLoaded) {
//This function is called once the Editor is loaded.
var view = new SubModule({el: '#sub-view' });
});
我对需求并不是那么熟悉所以也许我对此完全错了,但如果您认为这是一个好主意并且是否可能,我想在此向您提供这些内容?
答案 0 :(得分:1)
将模块与事件分离可能更简单,并使用require()
显式加载模块。
借用Backbone全球事件的答案 - Backbone.js global events。创建vent
:
vent = _.extend({}, Backbone.Events);
vent.trigger("some:event");
然后在触发事件时加载模块:
vent.on("some:event", function(){
require(["myModule"], function(myModule) {
myModule.doItsThing();
});
});
但如果你想写一个插件,那么最好的例子可能是 - https://github.com/requirejs/domReady/blob/master/domReady.js。
看看它,并替换为在触发特定全局事件时调用回调的版本,而不是在DOM准备就绪时。
但是,我怀疑你的依赖关系会是这样的:
require(["globalEvent!editorLoaded"], function() { ... });
而不是:
require(["editorLoaded!"], function() { ... });
(假设您的插件名为globalEvent
)
请参阅文本插件https://github.com/requirejs/text,了解如何将参数传递给插件。