作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经包含了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 文档中读到的那样)。我根据this post添加了该方法
那么,我该怎么做呢?
最佳答案
Backbone 集合只是简单存储模型,模型中包含数据。所以我不认为 localStorage 插件有内置的方法来在集合上存储自定义属性。
您的属性用于保持应用程序的状态,它应该是“ Controller ”的一部分,在主干的情况下是“ View ”。并且 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'));
}
如果需要,您可以在集合中执行相同的操作。没有理由通过主干同步侵入backbone.localStorage插件来做到这一点。
关于javascript - Backbone.js - 如何将集合保存到 localStorage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44683018/
我是一名优秀的程序员,十分优秀!