Lawnchair.js没有更新数据

时间:2012-07-12 14:54:25

标签: 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){
            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);
    };
};

然后使用此方法使用_.extend(来自Underscore.js库)扩展LocalStore:

save: function(collection, callback) {
        this.lawnchair.save({ key:this.name, value: collection }, function(record) {
            callback(record);
        });
    }

此代码用于将Backbone.js Collection对象更新为Lawnchair。第一次“保存”运行我的用户集合,它正确保存并显示该对象是一个简单的键/值对,其中值是一个数组。

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

我不知道该做什么。它应该只是简单地调用“lawnchair.save”更新记录,但它不会这样做。

1 个答案:

答案 0 :(得分:1)

你可以试试这个jsfiddle吗?

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

我重新创建了你的代码。我传递的是一系列对象,而不是骨干集合。这似乎有效。您可以在Firebug中看到日志记录输出。

我使用自己的扩展代码添加save()。老实说,我不明白为什么你会这样做,而不是只是在原型中添加一个属性。您的代码可能在这方面有所不同。

如果我发布的内容适用于您,您是否可以修改该代码以显示您在做什么?如果可能,请在jsfiddle上重新创建问题...