在获取集合时触发remove事件



我认为这是一种奇怪的行为。我有两个"section"实例。每个人都有一个练习集。然后,我对每个集合执行取回操作,问题来了。我可以从服务器接收一些模型,这些模型可以同时存在于两个集合中。但这不会有问题,因为它们是独立的实例。

模型:

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}

两个实例:

section1 = new App.Models.Section
section2 = new App.Models.Section

在两个练习集合中取:

section1.get('exercises').fetch({ data: params, remove:false })
section2.get('exercises').fetch({ data: params, remove:false })
我撒谎了,这是我对Backbone的问题。第一次集合接收它们的模型,我为每个模型生成一个视图(一个事件"添加",所以我渲染练习视图)。但接下来,由于某种原因,我不明白,主干触发一个删除事件,并删除所有重复的模型。在resume中,只有I可以在collection中拥有其他collection中没有的模型。

编辑

我已经发现了问题。问题是id是重复的。如果我手动更改它们的id,则一切正常。但除此之外,它不会这样做。但我认为这没有意义,因为我实例化了两个不同的部分。每个部分都有自己的数组,其中包含练习的id

最后我刚刚从我的项目中删除了Backbone-Relational

相关内容

  • 没有找到相关文章

最新更新