2012-11-23 29 views
0

在下面的代碼中,我建立了3個has-many/belongs-to關係。Backbone-Relational:Fetch返回通用JS對象

類別>子類別>產品

Category.js.coffee:

class App.Models.Category extends Backbone.RelationalModel 
    relations: [{ 
     type: Backbone.HasMany 
     key: 'subcategories' 
     relatedModel: 'App.Models.Subcategory' 
     collectionType: 'App.Collections.Subcategories' 
     reverseRelation: { 
      key: 'category', 
      includeInJSON: 'id' 
     } 
    }] 

App.Models.Category.setup() # Set up BB Relational 

Subcategory.js.coffee:

class App.Models.Subcategory extends Backbone.RelationalModel 
    relations: [{ 
     type: Backbone.HasMany 
     key: 'items' 
     relatedModel: 'App.Models.Item' 
     collectionType: 'App.Collections.Items' 
     reverseRelation: { 
      key: 'subcategory', 
      includeInJSON: 'id' 
     } 
    }] 

App.Models.Subcategory.setup() # Set up BB Relational 

Item.js.coffee

class App.Models.Item extends Backbone.RelationalModel 
    initialize: -> 
    ... 
App.Models.Item.setup() # Set up BB Relational 

問題:

調用item.get('subcategory')按預期工作,返回一個Backbone RelationalModel對象。但是,由於某種原因調用類別返回一個通用的JS對象。

item.get( '子類別')獲得( '類')

返回:對象{ID:1,名稱: 「標題」}

如果它的相關,控制檯.log @ subcategory.relations顯示消息「collectionKey = subcategory在collection = true時已經存在」。

+0

如果它返回一個通用的JS對象,有肯定是錯誤的設置BB – TYRONEMICHAEL

+0

我很懷疑,也許從類別 - >子類別的反向關係影響定義的關係類別? – pws5068

回答

0

解決!

Backbone-Relational通過使用setup()方法解決了coffeescript擴展語法的問題,如上所示。

我的問題在於我的Category.js.coffee在我的Item.js.coffee之前被初始化,因此setup()調用的反向關係無法添加到模型中。

爲了解決這個問題,我在有關相依的順序移動所有的設置()調用我的骨幹初始化(被定義一旦所有對象):

window.App = 
    init: (options) -> 
    # Set up BB Relational 
    GearSwap.Models.Item.setup() 
    GearSwap.Models.Category.setup() 
    GearSwap.Models.Subcategory.setup()