我想知道在将add: true
传递给fetch
时是否有任何方法可以获取已更改的模型。它渲染了集合中的所有新模型,但我也想知道是否有任何模型发生了变化。
这可能吗?
我还考虑过将一个不同的函数作为成功处理程序传递给fetch
的可能性,这个函数只会重新渲染视图的某些部分而不是整个视图。
答案 0 :(得分:2)
通常的模式是拥有一个呈现模型的视图。然后你:
add
事件,以附加添加模型的视图。change
以重新渲染。如果您仍想只有一个视图,则:
- 订阅集合的add
事件以附加到视图。
- 订阅集合的change
事件并更新视图的部分内容。
答案 1 :(得分:2)
从版本0.9.10开始,您应该使用{update:true}
而不是{add:true}
。这将告诉集合为其已更改的每个模型触发change
事件。 (请注意,集合而非模型会触发change
事件
如果您希望集合添加和更新模型,但不删除它们,您可以这样完成:
myCollection.fetch({update:true, remove:false});
Here's the relevant section in the Backbone.js documentation
答案 2 :(得分:1)
您可以绑定到“add”事件并触发仅更新视图的一部分的方法。您必须显式绑定集合事件才能重新呈现视图。换句话说,您可以控制应该呈现视图的哪些部分。您是否可以根据集合“更改”事件更改您渲染视图的功能?
每个模型都有一个方法isNew()和hasChanged()。您可以遍历您的集合以查看哪些模型已更改。如果有一种更容易和更熟练的方法来做到这一点,我很满意。
也许您可以发布一些代码,以便我们可以准确地看到您在做什么?