我想在每次有新的模型加入集合时增加模型位置属性,我试过将默认值转换成一个返回等于++集合位置的函数,但没有成功。有人能告诉我最好的方法吗?
var Col = Backbone.Collection.extend()
var Mod = Backbone.Model.extend({
defaults() {
return {
position: ++this.collection.length
}
}
})
var col = new Col([{
id: 1
}, {
id: 2
}])
col.toJSON() // returns [{id: 1}, {id: 2}]
1条答案
按热度按时间aij0ehis1#
你有两个明显的问题。
1.跟踪集合中模型的位置。
使用集合的
length
不足以精确跟踪位置。假设您有3个模型,第一个模型位于位置1,最后一个模型位于位置3。然后删除前两个模型,并在末尾添加一个新模型,此时收集长度为2,您将拥有不一致的位置。
每次集合中发生更改时,您都需要更新集合中所有模型的位置。
下面是一个使用
update
事件的简单示例。