Backbone-Relational:Fetch 返回通用 JS 对象



在下面的代码中,我建立了3个多/属于关系。

类别> 子类别>项目

类别.js.咖啡:

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

子类别.js.咖啡:

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

项目.js.咖啡

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

问题:

调用 item.get('subcategory') 按预期工作,返回一个 Backbone RelationalModel 对象。 但是,由于某种原因,调用类别会返回一个通用的 JS 对象。

item.get('

subcategory').get('category')

返回:对象 {id: 1, title: "the title"}

如果相关,控制台.log @subcategory.relations显示消息"collectionKey=subcategory 已存在于collection=true"。

解决了!

Backbone-Relational 通过使用 setup() 方法解决了 coffeescript 扩展语法的问题,如上所示。

我的问题是我的 Category.js.coffee 在我的

Item.js.coffee 之前被初始化,因此无法将 setup() 调用的反向关系添加到模型中。

为了解决这个问题,我按照关系依赖关系的顺序将所有 setup() 调用移动到我的主干初始值设定项(一旦定义了所有对象):

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

相关内容

  • 没有找到相关文章

最新更新