gpt4 book ai didi

backbone.js + 全局事件调度程序 + require.js : how-to?

转载 作者:行者123 更新时间:2023-12-02 23:46:05 24 4
gpt4 key购买 nike

我有许多 Backbone 模型,它们组织在集合中并连接到相应的 View 和/或 View 集合。其中一些不属于同一集合的模型需要触发另一个模型(可能不止一个)感兴趣的事件。

我认为,处理此问题的推荐方法是“全局事件调度程序/聚合器”,如here所述。和其他地方。

但是,我也碰巧使用了 require.js,这似乎违背了将调度程序/聚合器附加到应用程序的命名空间对象的想法 - 或者我在这里错了?

所以我的问题是:使用 require.js 如何让多个不同的 Backbone 模型触发一个由另一个模型处理的事件?

最佳答案

与 @Andreas 提出的解决方案类似,但没有 Backbone.Marionette(尽管如此,see the article linked in the question 深受启发)。

您所要做的就是定义一个模块,该模块创建事件监听器的单例,并在要触发事件或监听此事件的模块中需要此对象。

假设您有 app/channel.js 定义您的 channel

define(['backbone', 'underscore'], function (Backbone, _) {
var channel = _.extend({}, Backbone.Events);
return channel;
});

然后您可以通过

将其用作 监听器
require(['app/channel'], function (channel) {
channel.on('app.event', function () {
console.log('app.event');
});
});

您可以通过以下方式触发此 channel 上的事件

require(['app/channel'], function (channel) {
channel.trigger('app.event');
});

关于backbone.js + 全局事件调度程序 + require.js : how-to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com