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?

http://jsfiddle.net/QUgtg/1/

Я воссоздал твой код. Вместо магистральной коллекции я передаю массив объектов. Это похоже на работу. Вы можете увидеть результаты регистрации в Firebug.

Я использовал свой собственный код расширения, чтобы добавить save(), Хотя, честно говоря, я не понимаю, почему вы захотите сделать это таким образом, вместо того, чтобы просто добавить свойство в прототип. Ваш код может отличаться в этом аспекте.

Если то, что я опубликовал, работает с вашей стороны, не могли бы вы изменить этот код, чтобы показать, что вы делаете по-другому? Если возможно, воссоздайте проблему на jsfiddle...

Другие вопросы по тегам