创建需要js插件来监听骨干js全局事件

时间:2013-06-15 11:28:12

标签: javascript backbone.js requirejs

是否有可能创建一个侦听骨干全局事件的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' });
});

我对需求并不是那么熟悉所以也许我对此完全错了,但如果您认为这是一个好主意并且是否可能,我想在此向您提供这些内容?

1 个答案:

答案 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,了解如何将参数传递给插件。