首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >backbone.js:与上次服务器保存相比是否有变化?

backbone.js:与上次服务器保存相比是否有变化?
EN

Stack Overflow用户
提问于 2012-02-10 00:46:10
回答 3查看 7.3K关注 0票数 17

我有一个主干模型。使用model.set()可以设置一个本地值,使用model.save()可以将整个模型保存到服务器。

我如何知道自上次服务器保存后是否有更改,这意味着本地版本是脏的。

仅当模型从未保存到服务器时,model.isNew();才起作用。

EN

回答 3

Stack Overflow用户

发布于 2013-01-07 20:10:09

我正在使用CouchDB,而Couch有一个每次保存成功后都会更改的_rev属性。通过将以下代码放入模型初始化函数中,我解决了“save last-server-save”问题:

代码语言:javascript
复制
     initialize : function() {
        this.on('change',function(){
            if(this.hasChanged('_rev')) {
                this.isSaved = true;
            }else{
                this.isSaved = false;
            }
        },this);
      }
票数 5
EN

Stack Overflow用户

发布于 2012-07-09 22:29:24

另一种选择是将所有更新设置为“静默”更新,然后在您想要同步时收集更改:

代码语言:javascript
复制
// Updates
myModel.set({foo: 'bar'}, {silent: true}); // Does not fire a 'changed' event
myModel.set({foobar: 'barfoo'}, {silent: true});

// Sync
if (myModel.hasChanged()) {
  console.log(myModel.changedAttributes()); // {'foo':'bar', 'foobar':'barfoo'}
  _.each(myModel.changedAttributes(), function(value, key) {
    console.log(key+' used to be '+myModel.previous(key)+', but now is '+value);
  }
  myModel.save();
}
票数 4
EN

Stack Overflow用户

发布于 2015-10-14 15:35:13

仅供参考,我制作了一个小代码片段,它替换了默认的Backbone.sync方法。

被替换的Backbone.sync指出哪些属性自上次保存()以来发生了变化,并且它同时适用于模型和集合。

https://github.com/ChiefORZ/backbone.dirty-sync

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

https://stackoverflow.com/questions/9215036

复制
相关文章

相似问题

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