无论如何,仅在集合中或仅在模型中使用同步方法就足够了,那么为什么他们必须在两个地方同步呢?
2 回答
实际上这两种sync()
方法都只是一个通用Backbone.sync()
方法的代理:
Model.sync()
集合总是在它的单个模型上委托单个操作,例如: create
,remove
等等。sync()
但是Collection在操作中使用了自己的,fetch()
因为它与fetch
Model或Collection有很大的不同,例如:URL遵循另一种模式,后端层应该响应不同。
另一方面,我认为这Backbone.sync()
是一种私有方法,我尽量不直接使用它,如果我这样做我感觉不舒服。我认为该sync()
方法是一个处理程序点,允许您完全覆盖后端同步,您可以覆盖该方法以实现不同的持久层,例如使用LocalStorage。但不能直接调用。
正如@JMM 在评论中所说,Model.sync()
andCollection.sync()
也是一个可以被改写的好点,以使其“做一些定制的事情,然后Backbone.sync()
像往常一样调用”。
sync
默认情况下,Backbone 在模型和集合中没有- 方法,但是模型和集合都有使用- 方法进行 ajax 调用的方法(fetch
对于模型和集合以及save
对于destroy
模型) 。文档,带注释的来源Backbone.sync
使用Backbone.sync
检查单个集合或模型的方法是否存在的方法,因此可以通过覆盖或通过扩展需要自定义同步的模型或集合与特定部分sync
来覆盖所有同步的默认功能-function .Backbone.sync
sync
至于为什么模型和集合都具有与服务器同步的能力:灵活性。如果只有集合具有同步功能,那么您将无法拥有单个模型,如果只有模型具有同步功能,您将如何最初从服务器获取大量模型。模型和集合的同步功能没有缺点,为什么不呢?
我对您的反问:仅在另一个上进行同步如何就足够了?