Backbone.js:fetch({add:true}),触发更改事件?

时间:2012-08-29 17:29:22

标签: backbone.js

我想知道在将add: true传递给fetch时是否有任何方法可以获取已更改的模型。它渲染了集合中的所有新模型,但我也想知道是否有任何模型发生了变化。

这可能吗?

我还考虑过将一个不同的函数作为成功处理程序传递给fetch的可能性,这个函数只会重新渲染视图的某些部分而不是整个视图。

3 个答案:

答案 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()。您可以遍历您的集合以查看哪些模型已更改。如果有一种更容易和更熟练的方法来做到这一点,我很满意。

也许您可以发布一些代码,以便我们可以准确地看到您在做什么?

相关问题