2015-07-11 46 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'事件。避免它