データをローカルに保存するための「LocalStore」オブジェクトがあります。これは Lawnchair オブジェクトに基づいています。
var LocalStore = function(name) {
var that = this;
that.name = name;
that.lawnchair = Lawnchair({ name: that.name }, function(store) {
this.before('save', function(record){
console.log("saving " + that.name);
console.log(record);
});
this.after('save', function(record){
console.log("saved " + that.name);
console.log(record);
that.getData(function(records){
console.log("now it's this");
console.log(records);
});
});
});
that.getData = function(callback) {
that.lawnchair.get(that.name, callback);
};
};
LocalStore は、次_.extend
のメソッドで (Underscore.js ライブラリから) 拡張されます。
save: function(collection, callback) {
this.lawnchair.save({ key:this.name, value: collection }, function(record) {
callback(record);
});
}
このコードは、Backbone.js Collection オブジェクトを Lawnchair に更新するために使用されます。ユーザー コレクションに対して初めて「保存」を実行すると、正しく保存され、オブジェクトが単純なキーと値のペアであり、値が配列であることが示されます。
コードの後半で、ユーザーがデフォルト プロジェクトを選択したときに、ユーザー コレクションを変更し、ユーザーの更新された「defaultProjectId」を使用して「保存」を再度呼び出します。コードはエラーなしで実行されますが、after('save')
Lawnchair のコードは次
のことを示していrecord
ます。
-getData
データベースから最新のものを取得するメソッドは、単純な配列の値を持つキーと値のペアとして表示され、defaultProjectId が正しく設定されていません。
どうしようか途方に暮れています。「lawnchair.save」を呼び出すだけでレコードが更新されるはずですが、そうではありません。