これは私が思う奇妙な行動です。2 つの「セクション」インスタンスがあります。それぞれにエクササイズ集が付いています。次に、コレクションごとにフェッチを行いますが、ここに問題があります。サーバーから、2 つのコレクションに同時に存在できるモデルを受け取ることができます。しかし、これらは独立したインスタンスであるため、これは問題になりません。
モデル:
class App.Models.Section extends Backbone.RelationalModel
relations: [
{
type: Backbone.HasMany
key: 'exercises'
relatedModel: 'App.Models.Exercise'
collectionType: 'App.Collections.Exercises'
reverseRelation:
key: 'section'
includeInJSON: false
}
]
意見:
class App.Views.Section extends Backbone.Views
initialize: ->
@collection.bind 'add', @renderExercise
@collection.bind 'remove', @unrenderExercise
@subviews = {}
renderExercise: (exercise) =>
view = new Baskeitor.Views.ExerciseShow model: exercise
@subviews{exercise.cid} = view
@$el.append view.render().el
unrenderExercise: (exercise) =>
@subviews{exercise.cid}.remove()
delete @subviews{exercise.cid}
2 つのインスタンス:
section1 = new App.Models.Section
section2 = new App.Models.Section
2 つの演習コレクションをフェッチします。
section1.get('exercises').fetch({ data: params, remove:false })
section2.get('exercises').fetch({ data: params, remove:false })
私は嘘をつきました、これはバックボーンに関する私の問題です。最初に、コレクションがモデルを受け取り、各モデルのビューを生成しました (「追加」イベントなので、演習ビューをレンダリングします)。しかし次に、理解できない何らかの理由で、バックボーンは削除イベントをトリガーし、繰り返されるすべてのモデルを削除します。履歴書では、モデルが他にないコレクションに私だけがいることができます。
編集
問題を特定しました。問題は、IDが重複していることです。ID を手動で変更すると、すべて正常に動作します。しかし、そうでなければそれはしません。しかし、私は 2 つの異なるセクションをインスタンス化しているので、これは意味がないと思います。各セクションには、演習の ID を持つ独自の配列があります。