Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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.js-如何将集合保存到localStorage?_Javascript_Backbone.js_Local Storage - Fatal编程技术网

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

Javascript Backbone.js-如何将集合保存到localStorage?,javascript,backbone.js,local-storage,Javascript,Backbone.js,Local Storage,我已经在代码中包含了,但似乎找不到将我的集合(或者更具体地说是集合的属性)保存到localStorage的方法 这是我的收藏代码: //Collection var Playlist = Backbone.Collection.extend({ model: Song, localStorage: new Backbone.LocalStorage('playlist'), initialize: function(models,options) { _.

我已经在代码中包含了,但似乎找不到将我的集合(或者更具体地说是集合的属性)保存到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
方法之前,没有任何方法(正如我在主干文档中看到的那样)。我根据


那么,我应该如何做到这一点呢?

主干收集只用于存储模型,而模型包含数据。所以我认为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'));
}

如果需要,可以在集合中执行相同的操作。没有理由通过主干同步来入侵主干网。localStorage插件可以做到这一点。

主干网集合用于简单地存储模型,并且模型包含数据。所以我认为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'));
}

如果需要,可以在集合中执行相同的操作。没有理由通过主干同步侵入主干网。localStorage插件来实现此目的。

您想保存哪个属性?最后两个:currentTrack和CurrentTime您想保存哪个属性?最后两个:currentTrack和CurrentTime我只需将数据放在一个模型中。@EmileBergeron您是说一个不同的模型吗为了保持状态,对吧?没错!既然OP使用的是localStorage,而且它已经可以同步模型属性,那么除了避免手动使用localStorage之外,为什么不使用模型的功能呢?我会简单地将这些数据放在一个模型中。@EmileBergeron你指的是一个不同的模型,只是为了保存状态,对吗?没错!既然OP使用的是localStorage,并且已经同步了模型属性,那么为什么不使用模型的特性来避免手动使用localStorage呢。