2013-03-11 2 views
1

나는 백본에서 OOTB 동기화 및 RESTful 기능을 많이 사용하려고합니다. 내 모델에 기본 CRUD를위한 웹 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()를 먼저 작성하여 상위 컬렉션을 가져온 다음 성공한 다음 하위를 가져 와서 자체 성공 후 자식을 가져 오는 것입니다. like :

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 개의 모든 콜렉션은 이제 컨트롤러 레벨에 있으며 각 콜렉션이 각 "재설정"이벤트에로드 된 후에 다음 콜렉션을로드합니다.