如何从localStorage集合中删除Backbone模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从localStorage集合中删除Backbone模型相关的知识,希望对你有一定的参考价值。

我创建了一些全部保存在本地存储集合中的模型。我的挑战是如何使用其中一个模型属性值从本地存储中删除集合中的模型。以下是我的代码摘录:

var Food = Backbone.Model.extend({
    defaults: {
    title: '',
    calories: 0,
    date: '',
    history: false
}
});

var Foods = Backbone.Collection.extend({  
    model: Food,
localStorage: new Backbone.LocalStorage('Health-Tracker')
});  
my_foods = new Foods({});

var ls = new Backbone.LocalStorage('Health-Tracker');
var res = ls.findAll();
var n = res.length;
var i, id;
for (i = 0; i < n; i++) {
    food = res[i];
    id = food['id'];
    title = food['title'];
    calories = food['calories'];
    date = food['date'];        
    history = food['history'];      
    //I am stuck here
    if (history) {      
        ls.remove(food); // Not working
        // I have also tried this
        ls.remove(id); // not working
    }
}

请注意,对于较大代码的其他部分中的某些模型,history已成功设置为true。如果历史值为真,则上面只是我需要采取行动的地方。现在它是糟糕的代码。任何帮助表示赞赏

答案

请注意,此应用程序不使用服务器来存储/检索数据。所有型号都存储在本地存储中。使用findAll()和remove()是一个非常漫长的过程,就像我上面用来从localstorage中删除一样。添加以下内容以从本地存储中删除模型:

my_foods.fetch();
    my_foods.models.forEach(function(food){
        day = food.get('day');
        new_day = get_new_day();// this function isn't included above
        if (new_day > day) {
            food.destroy();         
        }
});

以上是关于如何从localStorage集合中删除Backbone模型的主要内容,如果未能解决你的问题,请参考以下文章

如何根据分配给当前单击元素的数据从 localStorage 中删除 JSON 对象?

LocalStorage,遍历匹配的 ID,从 DOM 中删除

Extjs4 localstorage -- 如何删除所有记录?

从 localStorage 中删除:我应该使用 delete 还是 .removeItem?

从 Vuejs 中的 localStorage 中删除值

React JS:从 localStorage 中删除一个项目