我无法获得backbone.localstorage.js来正确保存

时间:2016-02-18 00:16:50

标签: javascript backbone.js

我正在开发一款可以保存用户食物日志的应用。我使用的是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/

1 个答案:

答案 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();

(出于某种原因,我无法提升小提琴,当我尝试更新/分叉时它会抛出错误)但我已经测试了上述内容。