我有一个骨干模型,我想在本地更新,但我不知道更新是否会改变模型中的任何内容。
我不想在模型上运行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问题是调用保存显然会触发change,因此我们进入了一个令人兴奋的无止境的循环。
为什么save会触发change?如果是这样,对我来说,实现上述目标的正确方法是什么?
发布于 2013-08-31 17:26:42
我不确定将save附加到change事件是否是一个好主意(我也不确定这是不是一个好主意--我想这取决于情况),但在回答您的问题时,您可以在保存之前检查模型hasChanged。您可以在主干文档这里中阅读更多有关这方面的内容。
var Goat = Backbone.Model.extend({
initialize: function() {
this.on('change', function() {
if (this.hasChanged()) {
this.save();
}
});
}
});https://stackoverflow.com/questions/18543548
复制相似问题