Javascript 如何检查主干中的几个属性更改?
我有一个modelJavascript 如何检查主干中的几个属性更改?,javascript,backbone.js,Javascript,Backbone.js,我有一个modeluser,它有两个属性:名字和姓氏。 我想更新它,所以我显示了一个预先填充的表单,其中姓名和姓氏都已填充。之后,我需要用代码保存更新模型,但在此之前,我必须检查模型是否已更改: this.model.set("name", formData.name); this.model.set("surname", formData.surname); if (this.model.hasChanged()) { this.model.save(); } 考虑在“发件人”中仅更
user
,它有两个属性:名字和姓氏。
我想更新它,所以我显示了一个预先填充的表单,其中姓名和姓氏都已填充。之后,我需要用代码保存更新模型,但在此之前,我必须检查模型是否已更改:
this.model.set("name", formData.name);
this.model.set("surname", formData.surname);
if (this.model.hasChanged()) {
this.model.save();
}
考虑在“发件人”中仅更改名称的情况:
this.model.set("name", formData.name);
//this.model.hasChanged() -> true
this.model.set("surname", formData.surname);
//this.model.hasChanged() -> false
if (this.model.hasChanged()) {
//so model do not changes at all :(
}
是否有方法检查所有模型属性是否已更改?(不是一个接一个)我建议更改设置模型属性的方式,而是一次设置所有属性。如果在模型集操作期间任何属性发生更改,则这将允许仅触发一次
change
事件
this.model.set({
名称:formData.name,
姓氏:formData.name
});
if(this.model.hasChanged()){
//执行此代码。。。
}
在此之后,我需要用代码保存更新模型,但在此之前,我需要
必须检查模型是否已更改:
this.model.set("name", formData.name);
this.model.set("surname", formData.surname);
if (this.model.hasChanged()) {
this.model.save();
}
为什么要显式检查型号
是否已更改。您可以直接在model
上绑定change
事件,然后保存它。在这种情况下,当且仅当模型(模型中的任何属性)发生更改时,它将触发change
事件
试试这个:
this.model.on('change', function () {
this.model.save();
}, this);
查看和。因为每次更改模型属性时都会发送更改事件。例如,如果有15个属性,那么代码模型将保存15次。这不是很好的练习。谢谢@Cherry的评论。我关心的是检查
是否(this.model.hasChanged())
为什么需要这样做?此外,如果您将模型设置为一个完整的散列,而不是一次设置一个属性,change
事件将只触发一次。这就是我的想法。再次感谢。