在 Vue.js 中,watch 函数可以用来监听数据的变化。当被监听的数据发生变化时,watch 函数会执行相应的回调函数。然而,在给 v-model 绑定的对象属性赋值时,watch 函数并不会被触发,这是因为 Vue.js 无法检测到对象属性的变化。

为了解决这个问题,可以使用 Vue.setthis.$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.setthis.$set 方法来更新属性,以便触发 watch 函数的执行。

Vue.js 中 watch 函数无法监听对象属性变化的解决方法

原文地址: https://www.cveoy.top/t/topic/p4tg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录