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

问题描述 投票:0回答:1

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

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。如果历史值为真,则上面只是我需要采取行动的地方。现在它是糟糕的代码。任何帮助表示赞赏

backbone.js
1个回答
0
投票

请注意,此应用程序不使用服务器来存储/检索数据。所有型号都存储在本地存储中。使用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();         
        }
});
© www.soinside.com 2019 - 2024. All rights reserved.