Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.localStorage+;不工作?_Javascript_Backbone.js_Local Storage_Requirejs - Fatal编程技术网

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模型,然后将其添加到集合中,这样就像重复您已经完成的创建模型的过程一样。但是,如果您的错误已解决,则可以:)