簡體   English   中英

觸發更改事件,而在骨干視圖中重置

[英]Change event fired instead reset in backbone view

我試圖通過抓取來執行我的重置事件,但它不起作用...

路由器:

var tablesCollection = new TablesCollection();
var tablesView = new TablesView({ collection: tablesCollection});
tablesCollection.fetch({ reset: true });

我的觀點:

initialize: function(){

  _.bindAll(this);
  this.collection.bind('reset',   this.render);
  this.collection.bind('add',     this.addTable);
  this.collection.bind('change',  this.changeTable);
  this.collection.bind('destroy', this.delTable);
},
render: function() {
  this.el.innerHTML = _.template( this.template, { data : _.groupBy( this.collection.toJSON(), 'status')} );
}

如果我已重置,則仍會觸發Change事件:fetch中為true。 我想通過重置事件然后通過剛剛編輯的更改事件來呈現集合中的每個項目。 謝謝您的幫助

重置集合不會刪除事件綁定。 只是從集合中刪除對象。

如果另一個視圖/服務器事件再次開始填充您的集合,則您的視圖仍將被綁定並仍然觸發事件。

首先,我將使用.on(主干事件系統)代替.bind

然后,如果您想從集合中解除視圖的綁定,則可以使用http://backbonejs.org/#Events-off

或者更好的是,如果您想破壞這個特定的視圖(並且它仍然在做出反應,也許這就是您的問題),請使用http://backbonejs.org/#View-remove

它將自動取消綁定所有事件。

希望對您有所幫助

編輯:

重置將始終觸發“更改”,因為它會更改您集合的所有對象。 您應該調整渲染功能,使其在“更改”而不是“重置”時觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM