Backbone.localStorage + RequireJS:不工作?

时间:2012-09-02 09:17:54

标签: javascript backbone.js local-storage requirejs

收藏定义:

define(function(require) {
    var Backbone = require('backbone'),
        m = require('../models/m');
        require('backbone.localstorage');

    var c = Backbone.Collection.extend({
        model: m,
        localStorage: new Backbone.LocalStorage('queue')
    });

    return new c();
});

在视图中:

define(function(require) {
    var $ = require('jquery'),
        _ = require('underscore'),
        Backbone = require('backbone'),
        c = require('../collections/c');

    var v = Backbone.View.extend({
        ...
        events: {
            'click div': 'updateQueue'
        },
        updateQueue: function($_event) {
            c.add(this.model);
        }
    });

    return v;
});

c.add(this.model);行根本不起作用,Collection永远不会保存到localStorage,每次重新加载页面时都会丢失所有模型。知道我哪里做错了吗?我正在为Github使用最新的Backbone.localStorage版本。

修改

改为c.create()而它仍未保存到localStorage。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

尝试调用create()函数c.create(this.model);,这会自动保存您的模型。 或者,您可以在将模型添加到集合

之前保存模型

答案 1 :(得分:1)

发现错误:

updateQueue: function($_event) {
    c.create(this.model);          // wrong
    c.create(this.model.toJSON()); // correct!
}

答案 2 :(得分:0)

如果您将模型添加到集合中,并不意味着它已被保存。你必须自己调用save方法。

建议改为使用create