【问题标题】:Fire a remove event on fetching a collection在获取集合时触发删除事件
【发布时间】:2013-06-17 23:31:29
【问题描述】:

我认为这是一种奇怪的行为。我有两个“部分”实例。每一个都有练习集。然后,我为每个集合进行提取,这就是问题所在。我可以从服务器接收一些可以同时在两个集合中的模型。但这不是问题,因为它们是独立的实例。

型号:

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 的问题。在第一次集合收到他们的模型时,我为每个模型生成了一个视图(一个事件“添加”,所以我渲染了练习视图)。但接下来,出于某种我不明白的原因,Backbone 触发了一个删除事件并删除了所有重复的模型。在简历中,只有我可以拥有模型不在其他模型中的集合。

编辑

我已经确定了问题所在。问题是 id 是重复的。如果我手动更改他们的 ID,那么一切正常。但否则它不会这样做。但我认为这没有意义,因为我正在实例化两个不同的部分。每个部分都有自己的数组,其中包含练习的 ID。

【问题讨论】:

  • 恕我直言,这更像是一个主干关系问题,如果您将“删除”选项设置为false,主干将永远不会调用remove()。 骨干关系是废话。无用>

标签: backbone.js backbone-relational


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多