0

是否可以创建一个需要 js 插件来侦听骨干全局事件,如果该事件被触发,需要 js 启动?

这是我想用 require 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' });
});

我对require不太熟悉,所以也许我对此完全错了,但是如果您认为这是一个好主意并且可能的话,我想从您这里来?

4

1 回答 1

1

将模块与事件解耦并使用require().

从这个答案中借用 Backbone 全局事件 - Backbone.js 全局事件。创建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 。

于 2013-06-15T13:47:45.857 回答