骨干本地存储添加两次

时间:2015-08-01 23:58:45

标签: backbone.js local-storage

如何解决骨干本地存储添加两次的问题。

我在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
        });
    },

1 个答案:

答案 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;
};

这有一些缺点,因为它具有散列函数,每个标题只能添加一次,并且散列冲突的可能性更大。