【问题标题】:Adding model to Backbone.localstorage Collection将模型添加到 Backbone.localstorage 集合
【发布时间】:2014-12-02 04:15:37
【问题描述】:

我正在尝试将模型添加到集合中,该集合将通过 Backbone.localstorage 插件存储在本地存储中。

在集合中添加模型的代码如下:

define([ 'jquery', 'underscore', 'model/articleModel', 'backbone', 'localstorage' ],     function($, _, itsModel, Backbone) {
    var articleCache = Backbone.Collection.extend({
        model: itsModel,
        localStorage: new Backbone.LocalStorage("articles-backbone-cache"),

        addArticle: function(model){
            console.log('Adding new article ID [' + model.id + '] Title [' + model.title     + '] to cache via backbone.localstorage');
            console.log(model);

            //CRUCIAL PART
            this.create(model); // Doesn't work
            this.create(model.toJSON()); //Doesn't work
            this.create({id: model.id}); // Works but only id is saved and naturally all other attributes are set to defaults
        }
    });

    return articleCache;
});

型号是:

define([ 'jquery', 'underscore', 'backbone', 'localstorage' ], function($, _, Backbone) {

    var article = Backbone.Model.extend({
        defaults : {
            id : '0',
            title : '',
            subtitile : '',
            date : '',
            section : '',
            section_id : -1,
            subsection : null,
            subsection_id : null,
            noOfComments : 0
    });

    return article;
});

问题是模型没有保存到本地存储。当我使用“this.create({id:model.id});”时它只保存到本地存储但缺少所有其他属性。

传递给 addArticle(model) 的模型与预期的模型相同,有人可以就如何将这些数据持久保存到本地存储提供一些帮助吗?

我不想写以下内容,因为它已经是那种形式了:

this.create({id: model.id, title:model.title, . . . })

【问题讨论】:

  • 确保所有模型都有 id 和不同的 id。
  • 检查和检查。我尝试保存到此集合的模型是使用正常的 Backbone REST 调用从远程服务器检索的。所以所有的 id 都是唯一的并且非空/未定义。

标签: javascript backbone.js local-storage backbone-local-storage


【解决方案1】:

使用add 代替create

http://backbonejs.org/#Collection-createcollection.create(attributes, [options])

http://backbonejs.org/#Collection-addcollection.add(models, [options])

【讨论】:

  • 我试过用add,也不管用。此外,根据here,create 方法应该用于本地存储插件的情况。编辑:在我在原始问题中概述的所有 3 种情况下,使用 add() 均失败。
  • 你能创造一个小提琴来玩吗?
【解决方案2】:

要将模型添加到集合中,您应该使用add 函数。

这会将模型添加到集合中,但尚未同步到 localStorage。

要将添加的模型持久化到本地存储,您必须调用model.save()

HTH!

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 1970-01-01
    • 2016-04-29
    • 2012-01-19
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多