我有点失落所以任何帮助都会非常感激。 (我正在使用Backbone.js和CoffeeScript。)
我有一组模特。它们全部放在MasterCollection
。
MasterCollection extends Backbone.Collection
model: Model
MasterCollection.add({#attributes of a new model})
我有时需要将这些模型分开并分批处理它们的属性。这些批次还需要有一个相应的DOM视图,可以显示所有模型的数据。
Model extends Backbone.Model
initialize: () ->
#add the model to it's batch, batches are collections stored in an array
batches = ParentModel.get('baches')
#find the batch this model belongs in
for batch in batches
if batch = #the right one
batch.add(@toJSON)
Batch extends Backbone.Collection
changeAttributes: () ->
for model in @models
#change things about the model
MasterCollection
?由于我需要将DOM绑定到新批次的创建,因此将它们作为集合中的模型将会很棒。
这是整体做这类事情的好方法吗?
谢谢!
答案 0 :(得分:1)
当批次更改此模型时,它将更新MasterCollection中的模型吗?
因为你正在做
batch.add(@toJSON)
你真的只是将模型的克隆添加到batch
集合中。因此,当您更改该集合的模型属性时,原件不会受到影响。
当然,这些是浅色副本,所以如果你做的话
(batch.at(0).get 'attr').x = y
你将修改原始版本的attr
属性。 (您也不会触发任何更改事件。)这是一般的Backbone禁止。相反,做一些像
attrCopy = _.extend {}, batch.at(0).get 'attr'
attrCopy.x = y
batch.at(0).set attr: attrCopy