簡體   English   中英

Backbone.js-如何將集合保存到localStorage?

[英]Backbone.js - How do I save a collection to localStorage?

我已經在代碼中包含了Backbone.localStorage ,但是似乎找不到找到將我的集合(或更具體地說是我的集合的屬性)保存到localStorage的方法。

這是我收集的代碼:

//Collection
var Playlist = Backbone.Collection.extend({
    model: Song,
    localStorage: new Backbone.LocalStorage('playlist'),
    initialize: function(models,options) {
        _.extend(this,_.pick(options, 'currentTrack'));
    },
    url: 'metadata',
    parse: function(response){
        return response
    },
    save: function(){
        Backbone.sync('create', this, {
            succes: function() {
                console.log('Saved');
            },
            error: function(){
                console.log('There was an error');
            }
        });
    },
    currentTrack: 0,
    currentTime: 0
});

在添加save方法之前,沒有任何方法(正如我在Backbone文檔中所讀)。 我根據這篇文章添加了該方法

那么,我該怎么做呢?

骨干收集僅用於存儲模型,並且模型包含數據。 因此,我認為localStorage插件沒有內置的方式可以將自定義屬性存儲在集合中。

您的屬性用於保持應用程序的狀態,該屬性應為“控制器”的一部分,在主干情況下為“視圖”。 並且view可以直接從localStorage設置/獲取它。

簡單如:

saveState: function(){
  localStorage.setItem('playlist.state',JSON.stringify({
    currentTrack: this.currentTrack,
    currentTime: this.currentTime
  }));
},
retrieveState: function(){
  return JSON.parse(localStorage.getItem('playlist.state'));
}

您可以根據需要在集合中執行相同的操作。 沒有理由通過主干同步來侵入steel.localStorage插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM