2013-07-22 2 views
0

백본 관계형을 사용하고 있습니다. onetomany 모델의 사용법은 정상적으로 작동합니다.backbone-relational : 관계없는 독립 실행 형 모델의 사용

하지만 단일/독립형 모델 백본 관계를 사용하여 문제를 겪고 : 주요

window.BeerOnlineShopPosition = Backbone.RelationalModel.extend({ 
urlRoot:"../api/beeronlineshoppositions", 
idAttribute: 'id', 
relations: [     
], 
defaults:{ 
    "id":null, 
    "position_amount":"" 
} 
}); 

window.BeerOnlineShopPositionCollection = Backbone.Collection.extend({ 
model:BeerOnlineShopPosition, 
url:"../api/beeronlineshoppositions" 
}); 

난이 :

beeronlineshopproductDetails:function (id) { 
    var beeronlineshopproduct = BeerOnlineShopProduct.findOrCreate(id); 
    beeronlineshopproduct.fetch(); 

    var beeronlineshopproduct_view = new BeerOnlineShopProductView({el: $('#content'), model: beeronlineshopproduct}); 

}, 

그래서 때 기존 레코드 에 점프 (... beeronlineshop/beeronlineshopproducts/# 4), 아무 일도 일어나지 않습니다. 그러나 디버깅은 가져 오기가 실행되고 뷰가로드된다는 것을 보여줍니다. 뷰는 어떻게 든 렌더링되지 않습니다.

내가 (F5) 새로 고침

는, 뷰가 제대로 렌더링됩니다. ...

내가 모델 부분에 대한 몇 가지 사소한 구문 오류를 만들 않았거나 다른 명백한있다 :

으로 내 질문은 그래서 모든 일이, 일대 다 모델 작동 언급 내가 가진 어려움에 대한 이유는 무엇입니까?

+0

어쩌면 백본 관계형은 중첩이있는 모델 만 지원합니다. backbone.js를 사용하면 작업을 수행하는 것 같습니다. 물론 "findOrCreate"가 없습니다. 누구나 확인할 수 있다면 좋을 것입니다. – engulfing

답변

0

그것은 때문에 findOrCreate 의해 생성 된 비동기 요청 일 수있다. beeronlineshopproduct.fetch()은 서버에 요청을하고 있지만 서버가 응답을 반환하기 전에보기가 렌더링됩니다.

두 가지 옵션이 있습니다.

beeronlineshop.fetch({ 
    success: function() { 
    var beeronlineshopproduct_view = new BeerOnlineShopProductView({el: $('#content'), model: beeronlineshopproduct}) 
    }); 

아니면 서버 간의 동기화의 모델을 청취하여 BeerOnlineShopProductView의 초기화를 전달할 수 있으며, 요구 : 당신은 너무 같은 fetch의 성공에 콜백으로 뷰의 렌더링에 전달할 수 있습니다 다음과 같이 다시 렌더링하는보기 :

window.BeerOnlineShopProductView = Backbone.View.extend({ 
    initialize: function() { 
    this.listenTo (this.model, "sync", this.render) 
    }, 
})