2015-07-11 41 views
1

我想避免對Backbone.Collection每個「添加刪除復位」事件重新呈現。骨幹 - 避免重新渲染每個刪除

所以在Backbone.View我可能有:

this.listenTo(this.collection,'remove',this.render); 

如果我刪除/刪除了一堆的車型,這將使​​得儘可能多的車型,因爲我刪除。

避免這種情況的最佳方法是什麼?

+1

一個方法是,當所有的模型已被刪除火災自定義事件,並聽取該自定義事件,而不是聽香草「刪除」。 –

+0

那麼你會如何刪除幾個模型?有沒有收集某個地方,你正在清理? – kevin628

+1

你已經從我們在這裏看到的東西中回答了你自己。如果你想要更多,你需要具體。 – Deryck

回答

3

您不必重新渲染,只是因爲事情需要走開整個視圖。

你可以有一個方法來刪除視圖的只是一個模型大塊:

model_removed: function(m) { 
    // find m's chunk of the view inside this.$el 
    // and remove it. 
    this.$('whatever-selector-you-need').remove(); 
} 

,然後綁定是到'remove'事件:

this.listenTo(this.collection, 'remove', this.model_removed); 

演示:https://jsfiddle.net/ambiguous/fL0zr67s/

或者,您可以嵌套您的視圖,以便爲每個模型和集合的總體視圖提供一個子視圖。收集視圖將根據需要創建和渲染模型視圖,然後只需在子視圖上調用remove以響應集合中的'remove'事件。避免它