Backbone.js - 从一个视图绑定到另一个视图?

时间:2011-08-03 17:30:56

标签: view backbone.js javascript-framework javascriptmvc

我有一个主应用视图,标题中有一个过滤器菜单。点击后,我想在单独的新闻Feed视图中过滤内容。但我不知道如何将事件(并传递类数据)从一个视图中的点击绑定到另一个视图中的函数。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:16)

有很多方法可以实现这一点,但是您可能想要创建一个模型对象,该对象在两个视图之间共享。然后在视图中“单击”,更新模型对象,并将视图2中的“on change”绑定到模型对象。

基本上,您可以设置两个视图以与模型对象保持同步,对对象的任何更改都将导致视图发生更改。

答案 1 :(得分:2)

Backbone中的所有内容都继承自Backbone.Events,因此您可以从任何地方触发和绑定事件(docs for Backbone.Events):

var View1 = Backbone.View.extend();

var View2 = Backbone.View.extend({
    eventHandler: function(data) {alert(data)}
});

var v1 = new View1;
var v2 = new View2;

v1.bind('hello-world-event', v2.eventHandler)
v1.trigger('hello-world-event', 'Hello World!')

请注意,在此示例中,当调用v2.eventHandler时,“this”将引用v1。有关详情,请参阅主干docs