繁体   English   中英

在添加时自动增加主干模型属性值?

[英]Automatically increment backbone model attribute value on add?

我想在每次将新模型添加到集合时增加模型位置属性,我尝试将默认值转换为返回等于++集合的位置但没有成功的函数。 任何人都可以建议最好的方法来做到这一点?

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. 根据集合属性设置Backbone模型的默认值
    但如果它仅适用于该职位,则可能没有必要。
  2. 跟踪模型在集合中的位置。

使用集合的length不足以精确地跟踪位置。

想象一下,你有3个模型,第一个模型位于第1位,最后一个模型位于第3位。然后前两个模型被移除,最后添加了一个新模型,收集长度现在为2,你将拥有已经不连贯的立场了。

每次集合发生变化时,您都需要更新集合中所有模型的位置。

这是使用update事件的简单示例。

var PositionCol = Backbone.Collection.extend({
    initialize: function(models, options) {
        this.listenTo(this, 'update', this.updatePositions);
    },
    updatePositions: function(options) {
        this.each(function(model, index) {
            model.set({ position: index });
        }, this);
    },
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM