0

我是新来的backbone.js。如何将数据存储在本地存储中并检索它们?我正在使用 jeromegn 的Backbone.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;
    }
   });

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

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

4

1 回答 1

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 中有效)

于 2017-01-23T12:41:31.150 回答