如何解决骨干本地存储添加两次的问题。
我在mu本地存储中的所有内容都获得了双倍值。本地存储还会添加一个密钥编号,密钥ID序列不按顺序排列:
drink: function() {
var val = $('#new_booze').val();
console.log(val);
if (val === this.lastTitle) {
return;
}
this.lastTitle = val;
this.collection.create({
boozeTitle: val,
id: this.makeID(val)
});
this.collection.fetch({
reset: true
});
},
答案 0 :(得分:0)
这是骨干本地存储的创建功能
中的一个错误create: function(model) {
if (!model.id) model.set(model.idAttribute, guid());
this.data[model.id] = model;
this.save();
return model;
},
设置ID&保存,都会触发模型的保存。
你可以通过使用快速非加密哈希作为id来避免这种情况,因为如果添加两个具有相同id的模型,骨干网将执行无操作。
makeID: function(string) {
var hash = 0;
if(string.length === 0) {
return hash;
}
for(i = 0; i < string.length; i++)
{
char = string.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash;
}
return hash;
};
这有一些缺点,因为它具有散列函数,每个标题只能添加一次,并且散列冲突的可能性更大。