collection.fetch({add:true})如何工作?

Abh*_*hek 6 fetch backbone.js

我在我的集​​合中添加了一个模型并进行了model.save数据保存在服务器上.

在此之后我调用collection.fetch({add:true}).理想情况下,只应从服务器返回一个模型,即新添加的模型,但我看到整个集合在chrome开发人员工具中传播回来.

我糊涂了.这实际上是如何工作的?

Loa*_*oof 14

作为Cyril N.的答案的附加组件(主要描述了默认行为,我认为应该足够了),我想更深入地解释3个标志的作用:

  • add:Backbone是否应该创建并向集合中添加尚不存在的模型(即,其id不在集合中)
  • remove:Backbone是否应该从集合中删除未从服务器返回的模型(即,其id不是带回的数据)
  • merge:Backbone是否应更新不在前两个类别中的模型(已在集合中,并从服务器返回)

但是,我想进一步扩展该方法的一般行为(它使用该Collection#set方法作为回调,因此它更多的Collection#set是行为).Backbone 准备模型,这意味着它在方法开始时创建虚假的,易变的模型(如果没有添加它们,它们只是易失性的).这可能会导致意外行为:因为它会创建模型,所以会执行这些行为的初始化方法.

另外,作为附注,自Backbone 1.0以来,Collection#reset如果要在获取时重置集合,则会引入该标志(因此它将此方法用作回调).在此之前,它是该Collection#fetch方法的默认行为.

好吧,有了这两个答案,你应该得到你需要的所有信息.