gpt4 book ai didi

javascript - Backbone JS事件函数修改对象

转载 作者:行者123 更新时间:2023-11-30 18:32:35 24 4
gpt4 key购买 nike

我正在使用 BackboneJS 开发一个相当复杂的应用程序。我有一个用于发布/订阅事件的 Globals 对象。挑战在于,似乎没有一种有效的方法可以使用事件驱动架构来解耦功能。

我正在考虑更多像 Magento 这样的事件系统。你看,在 Magento 中,你调用 dispatchEvent,并传递一个对象。 Magento 的下一行(这会中断,意思是,它正在等待该事件的所有订阅者首先执行),您可以再次访问这些对象。这种方式的好处是,任何订阅该事件的函数都会被传递一个它可以修改的对象,然后返回该对象。

因此,当订阅者完成执行时,我们可以获取这个修改后的对象并完成执行。在 JS 中,这将是一个回调,但想法是一样的。

所以我的问题:

  • 您是否知道在 Backbone 中加入了类似的东西?
  • 有你知道的插件吗?

感谢您的宝贵时间!

最佳答案

您可以定义自己的事件并将任何参数传递给所需的事件处理程序。例如,您可以定义一个事件并在触发该事件时传递一个对象:

var M = Backbone.Model.extend({
go: function() {
var o = { };
this.trigger('some:event', o);
console.log(o);
}
});

然后听众可以将他们想要的任何东西存储在他们作为参数获得的对象中:

var m = new M;
m.on('some:event', function(o) {
o.where_is = 'pancakes house?';
});
m.on('some:event', function(o) {
o.ill_cook = 'you some eggs, Margie';
});
m.go();

当你点击 时,{where_is: 'pancakes house?', ill_cook: 'you some eggs, Margie'} in o console.loggo 中调用。

演示:http://jsfiddle.net/ambiguous/4XCmc/

标准的 Backbone 事件当然有自己指定的监听器参数列表,但您可以添加任何您需要的自定义事件。

关于javascript - Backbone JS事件函数修改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9185001/

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