Backbone Copy One将事件视为另一个

时间:2012-11-16 16:09:03

标签: javascript jquery backbone.js

我在Backbone中有这个视图,它会根据用户操作更改其事件。

所以我有三个观点,都已经初始化了。

var view1 = new MainView({el : '#view1'});

var view2 = new ProductsView({el : '#prodcuts'});

var view3 = new StoresView({el : '#stores'});

现在我要做的是将事件从一个视图复制到另一个视图,然后更新视图el。我试过了:

if($option == 'products') {
  view1.events = view2.events
  $("div[data-role='content']", view1.el).html(content);
} else {
    view1.events = view3.events
  $("div[data-role='content']", view1.el).html(content);
}

问题在于,即使现在内容也是相同的,并且元素与事件相对应但事件不再触发。为什么这样,我该如何解决?

1 个答案:

答案 0 :(得分:3)

您需要调用delegateEvents方法。

例如以下内容(根据您提供的代码)。

if($option == 'products') {
  view1.delegateEvents(view2.events)
  $("div[data-role='content']", view1.el).html(content);
} else {
    view1.delegateEvents(view3.events);
  $("div[data-role='content']", view1.el).html(content);
}

另请注意,要删除事件,请使用undelegateEvents() 方法。