在 Vue 中,如果您希望监听对象内部某个值的变化,可以使用 watch 选项,结合 deep 选项以进行深度监听。以下是示例代码。
示例代码
<template>
<div>
<input v-model="myObject.name" placeholder="输入名字"/>
<input v-model="myObject.age" placeholder="输入年龄"/>
<p>姓名: {{ myObject.name }}</p>
<p>年龄: {{ myObject.age }}</p>
</div>
</template>
<script>
export default {
data() {
return {
myObject: {
name: '',
age: 0
}
};
},
watch: {
myObject: {
handler(newValue, oldValue) {
console.log('myObject 发生变化:', oldValue, '->', newValue);
},
deep: true // 深度监听
}
}
};
</script>
说明
data: 定义一个包含多个属性的响应式对象 myObject。
watch: 监听 myObject 的变化。
handler: 当 myObject 的任何属性发生变化时,触发此方法。
deep: 设置为 true,允许监听对象内部的属性变化。
监听特定属性
如果只想监听对象的特定属性,可以直接指定属性路径:
watch: {
'myObject.name'(newValue, oldValue) {
console.log('姓名发生变化:', oldValue, '->', newValue);
},
'myObject.age'(newValue, oldValue) {
console.log('年龄发生变化:', oldValue, '->', newValue);
}
}
小结
使用 deep 选项可以方便地监听对象内部的属性变化,适用于需要监控复杂数据结构的场景。