Javascript Lawnchair.js不更新数据

Javascript Lawnchair.js不更新数据,javascript,lawnchair,Javascript,Lawnchair,我有一个用于本地存储数据的“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){

我有一个用于本地存储数据的“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(来自underline.js库):

save: function(collection, callback) {
        this.lawnchair.save({ key:this.name, value: collection }, function(record) {
            callback(record);
        });
    }
此代码用于将Backbone.js集合对象更新为Lawnchair。第一次为“我的用户”集合运行“保存”时,它会正确保存,并显示对象是一个简单的键/值对,其中值是一个数组

稍后在我的代码中,当用户选择默认项目时,我修改用户集合并再次调用“save”,并在用户上更新“defaultProjectId”。代码运行时没有错误,但Lawnchair的
after('save')
代码运行并向我显示:
-返回的
记录
对象是一个键/值对,其中值是正确设置了defaultProjectId属性的完整主干.js集合。
-从数据库中获取最新数据的
getData
方法仍然显示为一个键/值对,值为一个简单数组,并且defaultProjectId设置不正确


我不知道该怎么办。它应该只是简单地调用“lawnchair.save”来更新记录,但它不能更新记录。

您能试试这个JSFIDLE吗

我已经重新创建了你的代码。我传入的不是主干集合,而是一个对象数组。这似乎奏效了。您可以在Firebug中看到日志输出

我使用自己的扩展代码添加了
save()
。尽管说实话,我不明白你为什么要这样做,而不是仅仅向原型添加属性。您的代码可能在这方面有所不同


如果我所发布的内容对您有效,您能否修改该代码以显示您的不同之处?如果可能,在JSFIDLE上重新创建问题

为什么要使用extend来添加函数?您是否将该函数添加到LocalStore函数或使用new LocalStore()创建的实例中?您是否也可以发布用户集合代码并/或将其放在上?我摆弄了您的小提琴,结果是[这个](实际上没有改变我所做的任何事情,但这确实导致我再次检查代码,我意识到我的代码试图将我的键保存为数组索引,将值保存为键……所以你得到了分数,因为你让我第50次再次查看,最后看到了我的错误。