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'

モデルの1つをBackbone.Modelを拡張するように切り替えると、両方をインスタンス化できますが、リレーショナル機能が壊れているというすべての警告が表示されます。

私は次のことを達成しようとしています:

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

私は何が欠けていますか?

4

1 に答える 1

10

「IDごとに1つのモデル」の状況の背後にある一般的な考え方は、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 に答える