0

集合定义:

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);行根本不起作用,并且集合永远不会保存到 localStorage 中,每次重新加载页面时都会丢失所有模型。知道我在哪里做错了吗?我正在为 Github 使用最新的 Backbone.localStorage 版本。

编辑:

改为c.create()改为,它仍然没有将任何内容保存到 localStorage。有任何想法吗?

4

3 回答 3

1

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

于 2012-09-02T12:25:35.523 回答
1

发现错误:

updateQueue: function($_event) {
    c.create(this.model);          // wrong
    c.create(this.model.toJSON()); // correct!
}
于 2012-09-03T22:08:56.897 回答
0

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

很好的建议create改用。

于 2012-09-03T08:27:18.507 回答