我正在开发一款可以保存用户食物日志的应用。我使用的是backbone.js。
我的大部分工作正常。我唯一的问题是使用backbone.localstorage.js。它没有在浏览器中创建localstorage条目。
这是我创建条目的地方。
var AllFoods = Backbone.Collection.extend({
model: Food,
localStorage: new Backbone.LocalStorage("allfoods")
});
我已将我的应用放入jsfiddle: https://jsfiddle.net/brettdavis4/654fqc6w/3/
答案 0 :(得分:1)
它没有创建任何条目的原因是因为您没有调用model.save()
,这是第一次将模型发送到持久层时。或者您也可以使用collection.create()
,内部调用model.save()
。
collection.add()
,collection.remove()
等方法返回受影响的模型,您只需调用save()
,destroy()
等即可将必要的操作传递给持久层通过同步。 Backbone本地存储只是Backbone ajax sync的代理。您需要通过触发适当的方法以某种方式调用同步机制。
例如,
替换
this.foods.add({
id: foodid,
title: item_name,
brand: brand_name,
calories: calorieAmt,
fat: fatAmt,
sodium: sodiumAmt,
protein: proteinAmt,
carbs: carbsAmt,
sugar: sugarAmt,
html: trackedhtml
});
与
this.foods.create({
id: foodid,
title: item_name,
brand: brand_name,
calories: calorieAmt,
fat: fatAmt,
sodium: sodiumAmt,
protein: proteinAmt,
carbs: carbsAmt,
sugar: sugarAmt,
html: trackedhtml
});
将在本地存储中创建实例。
或者你可以做到
var model = this.foods.add({
id: foodid,
title: item_name,
brand: brand_name,
calories: calorieAmt,
fat: fatAmt,
sodium: sodiumAmt,
protein: proteinAmt,
carbs: carbsAmt,
sugar: sugarAmt,
html: trackedhtml
});
model.save();
(出于某种原因,我无法提升小提琴,当我尝试更新/分叉时它会抛出错误)但我已经测试了上述内容。