如何覆盖Backbone集合的同步方法(而不是模型)?

时间:2012-10-15 21:15:50

标签: collections backbone.js sync

我有一个文件夹树,可根据您单击的文件夹获取集合。如果用户改变主意并单击另一个文件夹,我想中止之前的提取。由于这是在项目中的多个位置发生的,我想覆盖集合上的sync方法。我见过很多模型同步的例子,但不是集合。我还想保留查询字符串params。官方文档说明集合也有同步方法,但我从未见过这样做过。请指出我正确的方向。提前致谢。

1 个答案:

答案 0 :(得分:1)

Backbone的集合同步看起来与模型的同步方法完全相同:

// Proxy `Backbone.sync` by default.
        sync: function() {
            return Backbone.sync.apply(this, arguments);
        },
因为两者都是一样的,所以他们只是简单地代理" Backbone.sync方法。它们的原因是允许实现在每种类型的基础上更改同步逻辑,而不必触及将影响项目中所有模型和集合的主同步方法。

我建议你为你的收藏做类似的事情,因为你可能不想自己模仿Backbone的同步逻辑,它为你做了很多事情并弄乱它可能会导致难以解决的问题稍后解决。

var MyCollectionType = Backbone.Collection.extend({

    sync: function(method, model, options){
          //put your pre-sync logic here and call return; if you want to abort

         Backbone.Collection.prototype.sync.apply(this, arguments); //continue using backbone's collection sync 
    }
});