Lawnchair.js не обновляет данные
У меня есть объект "LocalStore" для локального хранения данных. Это основано вокруг объекта Лужайки.
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. Первый раз, когда "save" запускается для моей Коллекции пользователей, он сохраняет правильно и показывает, что объект представляет собой простую пару ключ / значение, где value - это массив.
Позже в моем коде, когда пользователь выбирает проект по умолчанию, я изменяю коллекцию пользователей и снова вызываю "save" с обновленным "defaultProjectId" для пользователя. Код работает без ошибок, но after('save')
код для Lawnchair работает и показывает мне, что:
- record
Возвращаемый объект - это пара ключ / значение, где value - это полная коллекция Backbone.js с правильно установленным свойством defaultProjectId.
- getData
Метод, который извлекает последние данные из базы данных, по-прежнему показывает в виде пары ключ / значение со значением простой массив и defaultProjectId, заданный неправильно.
Я в растерянности, что делать. Нужно просто позвонить "lawnchair.save", чтобы обновить запись, но это не так.
1 ответ
Не могли бы вы попробовать этот jsfiddle?
Я воссоздал твой код. Вместо магистральной коллекции я передаю массив объектов. Это похоже на работу. Вы можете увидеть результаты регистрации в Firebug.
Я использовал свой собственный код расширения, чтобы добавить save()
, Хотя, честно говоря, я не понимаю, почему вы захотите сделать это таким образом, вместо того, чтобы просто добавить свойство в прототип. Ваш код может отличаться в этом аспекте.
Если то, что я опубликовал, работает с вашей стороны, не могли бы вы изменить этот код, чтобы показать, что вы делаете по-другому? Если возможно, воссоздайте проблему на jsfiddle...