7

我想實現BackboneRelational並不斷得到骨幹關係不能實例2 RelationalModel對象

「不能與每個類型的 相同的ID實例化多個Backbone.RelationalModel!」

class App.Models.User extends Backbone.RelationalModel 
    urlRoot : '/api/users' 
    idAttribute: 'id' 

    relations: [ 
    type: Backbone.HasMany 
    key: 'plots' 
    relatedModel: 'App.Models.Plot' 
    collectionType: 'App.Collections.Plots' 
    includeInJSON: false 
    reverseRelation: 
     key: 'user_id', 
     includeInJSON: 'id' 
    ] 


class App.Models.Plot extends Backbone.RelationalModel 
    urlRoot : '/api/plots' 
    idAttribute: 'id' 

如果我切換模式,以延長Backbone.Model我可以實例都,但我得到的所有的警告,關係功能被打破..

我試圖實現如下:

plot = new App.Models.Plot({id : 700}) 
plot.fetch() 
plot.get('user') 

我在想什麼?

回答

10

「一個模型每個ID」情況背後的總體思想是,骨幹關係使用數據存儲(Backbone.Relational.store)消除對已經加載的模型的重複請求。

幸運的是,它還提供few helpers以幫助通過商店訪問模型。而不是提供一個ID和打水的情節,你可能會改用你會發現附着的findOrCreate方法App.Models.Plot

plot = App.Models.Plot.findOrCreate(700) 
user = plot.get('user') 
+1

的感謝!我現在可以實例化繪圖,但user = plot.get('user')返回undefined。 – Stpn

+0

你打賭!關係問題可能是別的。查看coffeescript /'setup' Q + A:https://github.com/PaulUithol/Backbone-relational#q-and-a – rjz

+0

我明白了..所以在閱讀完這篇文章之後,我得出結論,我只需要將App .Models.User.setup()作爲模型代碼的最後一行?對不起,但不能完全從它的解釋中得出它..我可以做plot.fetchRelated('user_id')雖然與.setup()修復但不是get('用戶').. – Stpn