0

これは私が思う奇妙な行動です。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 を持つ独自の配列があります。

4

1 に答える 1

0

最後に、プロジェクトから Backbone-Relational を削除しました。

于 2013-06-17T15:31:29.387 に答える