gpt4 book ai didi

backbone.js - Backbone 。在 View 之间调度/监听事件

转载 作者:行者123 更新时间:2023-12-03 18:01:04 24 4
gpt4 key购买 nike

我对如何处理 Backbone 中的 View 之间的事件有点困惑。现在我在一个网站上同时呈现了两个部分 View 。现在我希望其中一个 View 调度另一个 View 可以监听的事件。我该怎么做?

在调度我运行的事件的 View 中:

this.trigger("myEvent")

在 View 中我运行:
this.bind('myEvent', this.myFunc);

但似乎什么都没有发生。

最佳答案

如果您在 v1 上触发事件和:

this.trigger('myEvent'); // this is v1

那么你必须收听来自 v1 的事件和:
v1.on('myEvent', this.myFunc); // this is, say, v2 here.

这些事件不是全局的,它们来自特定的对象,如果你想接收它们的事件,你必须听那些特定的对象。

如果您将 View 直接相互绑定(bind),那么您很快就会陷入困惑,其中所有内容都直接与其他所有内容相关联。通常的解决方案是创建自己的事件总线:
// Put this where ever it makes sense for your application, possibly
// a global, possible something your your app's global namespace, ...
var event_bus = _({}).extend(Backbone.Events);

然后 v1将通过 event_bus 发送事件:
event_bus.trigger('myEvent');

v2会听 event_bus :
this.listenTo(event_bus, 'myEvent', this.myFunc);

我也从 bind 切换过来了至 listenTo 自从 listenTo更容易防止僵尸。

演示: http://jsfiddle.net/ambiguous/yb9TY/

关于backbone.js - Backbone 。在 View 之间调度/监听事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20816810/

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