【问题标题】:Backbone-Relational: Fetch returns generic JS objectBackbone-Relational:Fetch 返回通用 JS 对象
【发布时间】:2012-11-24 02:07:14
【问题描述】:

在下面的代码中,我建立了 3 个 has-many/belongs-to 关系。

类别 > 子类别 > 项目

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

子类别.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 对象。但是,由于某种原因,调用 category 会返回一个通用的 JS 对象。

item.get('subcategory').get('category')

返回:Object {id: 1, title: "标题"}

如果是相关的,console.log @subcategory.relations 会显示消息“collectionKey=subcategory already exists on collection=true”。

【问题讨论】:

  • 如果它返回一个通用的js对象,那么设置BB肯定有问题
  • 我怀疑可能是 Categories -> Subcategories 的反向关系会影响类别中定义的关系?

标签: backbone.js coffeescript backbone-relational


【解决方案1】:

解决了!

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

我的问题是我的 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()

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多