我有一個本地存儲數據的「LocalStore」對象。它基於Lawnchair對象。Lawnchair.js沒有更新數據
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的集合對象到Lawnchair。第一次「保存」爲我的用戶集合運行,它保存正確,並顯示對象是一個簡單的鍵/值對,其中value是一個數組。
後來在我的代碼中,當用戶選擇一個默認項目時,我修改了用戶集合,並再次用用戶上的更新「defaultProjectId」調用「保存」。代碼運行無誤,但Lawnchair的after('save')
代碼運行並向我顯示:
- 返回的record
對象是鍵/值對,其中value是完整的Backbone.js集合,其defaultProjectId屬性設置正確。
- 從數據庫獲取最新數據的getData
方法仍然顯示爲值爲簡單數組的鍵/值對,並且defaultProjectId設置不正確。
我不知道該怎麼做。它應該只是簡單地稱爲「lawnchair.save」更新記錄,但它不會。
爲什麼使用extend來添加函數?您是將函數添加到LocalStore *函數*還是添加到使用新的LocalStore()創建的實例? – 2012-07-14 16:15:35
你可以發佈Users集合代碼嗎?並且/或者將它放在[jsfiddle.net](http://jsfiddle.net)上? – 2012-07-14 20:02:09