我认为这是一种奇怪的行为。我有两个"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