我正在尝试比较初始对象和更新对象的特定值,所以如果它们是相同的按钮应该被禁用。 然而,即使在禁用“更改”按钮之后:
setDisabled(){
return this.selectedItem.color === this.selectedItemInitial.color &&
this.selectedItem.price === this.selectedItemInitial.price
},
哪里出了问题,为什么它没有改变布尔值?
您定义的函数setdisables
在呈现组件时执行一次,但在组件中的数据更改时不执行。
您应该将SetDisabled
(并将其重命名为ButtonDisabled
)移动到组件的计算属性。 这样,当组件中的data
或props
更新时,它将得到更新:
computed: {
buttonDisabled: function(){
return this.selectedItem.color === this.selectedItemInitial.color && this.selectedItem.price === this.selectedItemInitial.price
}
}
并在HTML中像这样使用它:
<!-- No parenthesis when using a computed property -->
<button :disabled="buttonDisabled"> ACTION </button>
您没有显示如何实例化组件数据,因此很难看出是否存在逻辑错误。
通常情况下,如果这样使用,该方法是有效的:
<button :disabled="setDisabled()"> ACTION </button>
另外,如果我建议您将其更改为计算属性:
computed: {
setDisabled: function(){
//logic here
}
}
您也可以在模板中完成整个操作。 这取决于变量的设置方式。
<button :disabled="selectedItem.color === selectedItemInitial.color">Click</button>