2013-03-11 61 views
1

我試圖在Backbone中儘可能多地使用OOTB同步和RESTful功能。我爲我的模型設置了基本CRUD的Web API。我有:Backbone.js級聯集合和同步?

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集合的「'/ searchcomponent /'+ 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()也是這樣。這可能是一個很好的做法,但是想要從其他人那裏得到類似的反饋。

回答

0

我最終沒有使用級聯格式。它似乎增加了更多的複雜性,並且沒有任何回報。現在所有3個集合都位於控制器級別,每次「重置」事件加載每個集合後,我都會加載下一個集合。