2013-07-22 156 views
0

我正在使用骨幹關係。 onetomany模型的用法正常工作。骨幹關係:使用與無關係的獨立模型

但是我用的骨幹關係爲單一/獨立的模型有麻煩:在主要

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-relational只支持嵌套的模型。 使用backbone.js似乎做的工作。但當然沒有「findOrCreate」。 如果任何人都可以驗證會很好。 – engulfing

回答

0

可能是因爲由findOrCreate創建的異步請求。 beeronlineshopproduct.fetch()正在向服務器發出請求,但在服務器返回響應之前呈現視圖。

您有兩種選擇。您可以在視圖渲染時fetch的成功傳遞的回調,像這樣:

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

或者你可以通過在你的BeerOnlineShopProductView的初始化監聽到它的模型與服務器同步,並呼籲重新呈現自己的視圖,如下所示:

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