如何使用 Backbone.js 在 localStorage 中存储数据

How to store data in localStorage using Backbone.js

我是 backbone.js 的新手。如何将数据存储在我的本地存储中并检索它们?我正在使用 jeromegn 的 Backbone.localStorage 但为什么我不能将它添加或保存到本地存储中?

这是我的 collection:

var Cases = Backbone.Collection.extend({
    localStorage: new Backbone.LocalStorage('dataObject'),
});

这是我的观点:

var CreateCase = Backbone.View.extend({
    el: '.case',
    render: function(){
        var template = _.template($('#create-case-view').html(), {});
        this.$el.html(template);
    },
    events: {
        'submit #caseForm': 'createCase',
        'click .back': 'returnBack',
        'focus #c_round': 'datePicker'
    },
    createCase: function(e){
        var caseDetails = $(e.currentTarget).serializeObject();
        var cases = new Cases();
        //console.log(caseDetails);
        cases.add(caseDetails, {
            success: function(cases){
                console.log(cases); //I CAN'T ADD/SAVE IT TO THE COLLECTION
                //router.navigate('', {trigger: true});
            }
        });
        return false;
    }
   });

当用户提交表单时,它应该被添加到 collection。

如何从 collection 中检索它?我用了 cases.fetch();但是没有数据。

我不知道 Backbone 的任何版本接受 Collection.add function. Based on your code, it looks like you want the Collection.create 函数的 success 回调,它不仅会添加您的模型,还会保存它(即执行同步)。

var Cases = Backbone.Collection.extend({
    localStorage: new Backbone.LocalStorage('dataObject'),
});

var cases = new Cases();

cases.create({caseNo: 1, caseName: 'another case'}, {
    success: function(caseModel){ // note, this is the model
        console.log(caseModel);
    }
});

在此处查看实际效果:https://jsfiddle.net/vbj2ouey/1/ (由于沙盒,它只适用于 JSFiddle)