我有一个Backbone模型,我想在本地更新,但我不知道更新是否会改变模型中的任何内容。
我不想在模型上运行set
并立即调用save
,因为没有任何更改。
理想情况下,我只是听一个change
事件,然后保存它:
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
问题在于,调用save然后显然会触发change
,所以我们进入激动人心的无尽圈子。
为什么save
会触发change
?如果是这样,那么我实现上述目标的正确方法是什么?
答案 0 :(得分:1)
我不确定将save
附加到change
事件是一个好主意(我不确定不是一个好主意 - 我想这取决于具体情况),但在回答您的问题时,您可以在保存之前检查模型hasChanged
。您可以在Backbone文档here中了解更多相关信息。
var Goat = Backbone.Model.extend({
initialize: function() {
this.on('change', function() {
if (this.hasChanged()) {
this.save();
}
});
}
});