20: LocalStorageを使ってデータを永続化する
Kazuhito Hokamura edited this page Oct 24, 2013
·
1 revision
以下のファイルをダウンロードしてjs/lib
以下に配置し、読み込みます。
<script src="js/lib/underscore.js"></script>
<script src="js/lib/backbone.js"></script>
<script src="js/lib/moment.js"></script>
<script src="js/lib/backbone.localStorage.js"></script>
<script src="js/app.js"></script>
<script src="js/model.js"></script>
<script src="js/view.js"></script>
CollectionのlocalStorage
属性にBackbone.LocalStorage
のインスタンスを設定します。
App.Schedules = Backbone.Collection.extend({
model: App.Schedule,
localStorage: new Backbone.LocalStorage('calendar'),
//...
set
をsave
、add
をcreate
にそれぞれ変更します。
App.FormDialogView = Backbone.View.extend({
//...
onSubmit: function(e) {
//...
if (this.model) {
this.model.save(params, { validate: true });
}
else {
this.collection.create(params, { validate: true });
}
},
//...
});
ローカルストレージにはmoment
のようなオブジェクトは持てないので、ローカルストレージからモデルに復元するときに呼ばれるparse
メソッドで変換する。
App.Schedule = Backbone.Model.extend({
//...
parse: function(attrs) {
attrs.datetime = moment(attrs.datetime);
return attrs;
},
//...
});
fetch
メソッドでローカルストレージのデータを復元します。
window.App = {};
App.mediator = _.extend({}, Backbone.Events);
$(function() {
var schedules = new App.Schedules();
schedules.fetch();
//...
});