Vue.js 中 watch 函数无法监听对象属性变化的解决方法
在 Vue.js 中,watch 函数可以用来监听数据的变化。当被监听的数据发生变化时,watch 函数会执行相应的回调函数。然而,在给 v-model 绑定的对象属性赋值时,watch 函数并不会被触发,这是因为 Vue.js 无法检测到对象属性的变化。
为了解决这个问题,可以使用 Vue.set 或 this.$set 方法来更新对象属性。这两个方法可以通知 Vue.js 对象属性的变化,从而触发 watch 函数。
代码示例:
<template v-for="leftEar in leftEarData" :key="leftEar.hz">
<td class="col1">
<a-input :value="leftEar.result" style="width: 50px" @input="updateResult(leftEar, $event.target.value)" />
</td>
</template>
methods: {
updateResult(leftEar, value) {
// 使用 Vue.set 或 this.$set 更新属性
this.$set(leftEar, 'result', value);
}
},
watch: {
leftEarData(newValue) {
console.log(newValue);
updateChart(newValue);
}
}
在上面的代码中,updateResult 方法使用 this.$set 来更新 leftEar.result 属性。当输入框的值发生变化时,updateResult 方法会被调用,从而触发 watch 函数的执行。
总结:
当使用 watch 函数监听对象属性的变化时,如果无法检测到属性的变化,可以尝试使用 Vue.set 或 this.$set 方法来更新属性,以便触发 watch 函数的执行。
原文地址: https://www.cveoy.top/t/topic/p4tg 著作权归作者所有。请勿转载和采集!