Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查主干中的几个属性更改?_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何检查主干中的几个属性更改?

Javascript 如何检查主干中的几个属性更改?,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(); } 考虑在“发件人”中仅更

我有一个model
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
事件将只触发一次。这就是我的想法。再次感谢。