收藏定义:
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。有什么想法吗?
答案 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
。