首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lawnchair.js未更新数据

Lawnchair.js未更新数据
EN

Stack Overflow用户
提问于 2012-07-12 22:54:25
回答 1查看 898关注 0票数 0

我有一个"LocalStore“对象用于在本地存储数据。它是基于一个Lawn椅子对象的。

代码语言:javascript
复制
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:

代码语言:javascript
复制
save: function(collection, callback) {
        this.lawnchair.save({ key:this.name, value: collection }, function(record) {
            callback(record);
        });
    }

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

稍后在我的代码中,当用户选择一个默认项目时,我修改了Users集合,并使用用户的更新后的"defaultProjectId“再次调用"save”。代码运行时没有错误,但Lawn椅子的after('save')代码运行并向我显示:

  • 返回的record对象是键/值对,其中value是正确设置了defaultProjectId属性的完整Backbone.js集合。
  • 从数据库获取最新值的getData方法仍显示为值为简单数组的键/值对,并且defaultProjectId设置不正确。

我不知所措,不知该怎么办。它应该只是简单地调用"lawnchair.save“来更新记录,但它并没有做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-17 02:23:36

你能试试这个jsfiddle吗?

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

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

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

如果我发布的内容在你的终端有效,你能修改代码来显示你做的不同之处吗?如果可能,在jsfiddle上重新创建问题...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11454590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档