Backbone.js级联集合和同步?

时间:2013-03-11 15:46:28

标签: rest backbone.js collections sync cascade

我正在尝试在Backbone中使用尽可能多的OOTB同步和RESTful功能。我为我的模型设置了基本CRUD的Web API。我有:

var SearchModel = Backbone.Model.extend({});
var SearchMappingModel = Backbone.Model.extend({});
var SearchComponentModel = Backbone.Model.extend({});

var SearchCollection = Backbone.Collection.extend({});
var SearchMappingCollection = Backbone.Collection.extend({});
var SearchComponentCollection = Backbone.Collection.extend({});

对于每个搜索,都有1对多的SearchMappings,对于每个SearchMapping,都有1对多的SearchComponents。我的同步URL类似于搜索集合的“/ search”,SearchMapping集合的“/ searchmapping /'+ searchId”,以及SearchComponent集合的“/ / componentcomponent /'+ mappingId”。

我的问题是,由于每个集合都依赖于前一个集合,我是否可以在骨干网中建立级联关系以最小化我的代码并使用已经存在的基本同步功能?

我最初的想法是在集合中创建一个集合并编写我自己的.fetch()来首先获取父集合,然后获取它的成功然后获取子节点,然后在它自己成功后获取它的子节点,如这样:

var SearchCollection = Backbone.Collection.extend({
    model: SearchModel,
    initialize: function (data) {
      this.url = baseURL + "/search";
      this.data = data;
      this.SearchMappingCollection = new SearchMappingCollection();
    },
    fetchData: function () {
      this.fetch({
        success: _.bind(function (results) {
          this.fetchListSuccess(results);
        }, this)
      });
    },
    fetchListSuccess: function (results) {
      this.SearchMappingCollection.fetchData(results);
    }

同样可以在.save()上完成。这可能是一种很好的方式,但希望得到其他人做出类似的反馈。

1 个答案:

答案 0 :(得分:0)

我最终没有使用级联格式。似乎它增加了更多的复杂性并且没有任何回报。所有3个集合现在都位于控制器级别,我只是在每次“重置”事件加载每个集合后加载下一个集合。