7

我正在尝试实施 BackboneRelational 并不断获得

“每个类型不能实例化多个具有相同 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'

如果我将其中一个模型切换为 extends Backbone.Model 我可以实例化两者,但我会收到所有有关关系功能已损坏的警告。

我正在努力实现以下目标:

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

我错过了什么?

4

1 回答 1

10

“每个 id 一个模型”情况背后的一般想法是,Backbone Relational 使用数据存储 ( Backbone.Relational.store) 来消除对已加载模型的重复请求。

幸运的是,它还提供了一些帮助程序来帮助通过商店访问模型。与其提供 ID 并获取绘图,不如使用findOrCreate您会发现附加到的方法App.Models.Plot

plot = App.Models.Plot.findOrCreate(700)
user = plot.get('user')
于 2012-09-01T01:29:36.613 回答