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 に答える