首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在保存时调用更改?

为什么在保存时调用更改?
EN

Stack Overflow用户
提问于 2013-08-31 01:21:20
回答 1查看 114关注 0票数 0

我有一个骨干模型,我想在本地更新,但我不知道更新是否会改变模型中的任何内容。

我不想在模型上运行set,然后立即调用save,因为没有什么改变。

因此,理想情况下,我只需侦听change事件,然后保存它:

代码语言:javascript
复制
var Goat = Backbone.Model.extend({

  initialize: function() {
    this.on('change', function(){
      this.save();
    });
  }

});

var billy = new Goat({
  gruff: true
});

billy.set('gruff', true); // doesn't do anything
billy.set('gruff', false); // fires change

问题是调用保存显然会触发change,因此我们进入了一个令人兴奋的无止境的循环。

为什么save会触发change?如果是这样,对我来说,实现上述目标的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 17:26:42

我不确定将save附加到change事件是否是一个好主意(我也不确定这是不是一个好主意--我想这取决于情况),但在回答您的问题时,您可以在保存之前检查模型hasChanged。您可以在主干文档这里中阅读更多有关这方面的内容。

代码语言:javascript
复制
var Goat = Backbone.Model.extend({
  initialize: function() {
    this.on('change', function() {
      if (this.hasChanged()) {
        this.save();
      }
    });
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18543548

复制
相关文章

相似问题

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