Javascript Backbone.localStorage+;不工作?
集合定义:Javascript Backbone.localStorage+;不工作?,javascript,backbone.js,local-storage,requirejs,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.Loca
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。有什么想法吗?尝试调用create()函数c.create(this.model)代码>,这将自动保存您的模型。
或者,您可以在将模型添加到集合之前保存该模型如果您将模型添加到集合,并不意味着它已保存。您必须自己调用save方法
建议改用create
。发现错误:
updateQueue: function($_event) {
c.create(this.model); // wrong
c.create(this.model.toJSON()); // correct!
}
是c.add(this.model)调用了代码>事件,或者是requirejs问题。改为c.create(),但仍然没有将任何内容保存到localStorage。有什么想法吗?好吧,它在这把小提琴里起作用了!但是真正的问题是this.model
不是应该添加/创建什么,而是this.model.toJSON()当您将这个.model.toJSON()传递给create()函数时。在内部,它检查传入的参数是否是backone模型,如果不是,则使用您传递的任何属性创建一个backone模型,然后将其添加到集合中,这样就像重复您已经完成的创建模型的过程一样。但是,如果您的错误已解决,则可以:)