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

时间:2017-01-23 06:34:30

标签: backbone.js backbone-collections backbone-local-storage

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

这是我的收藏:

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;
    }
   });

当用户提交表单时,应将其添加到集合中。

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

1 个答案:

答案 0 :(得分:3)

我不知道任何版本的Backbone接受Collection.add函数的success回调。根据您的代码,您似乎想要Collection.create函数,它不仅会添加您的模型,还会保存它(即执行同步)。

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中工作)