有个关于vue 监听数组对象属性变化的问题想请教下大家?谢谢?
我有个数组对象goods_list_data
我平时操作这个数组对象 修改值都是
this.goods_list_data[index].price_count = price_count
直接去进行修改的
我现在想用watch 监听这个数组对象的某个值的变化,比如this.goods_list_data[index].price_count
watch:{
'orde_data_obj': (newV, oldV) => {
console.log("watch", newV, oldV)
},
},
但是我好像不管怎么写,也监听不到变化,甚至直接监听这个数组对象也没反应,不知道是哪里有问题?
回复
1个回答

test
2024-07-20
使用 $set
去变更对象数组内的属性。
示例代码:
<template>
<div>
<button @click="changeListObjData">点击变更</button>
<p>{{list}}</p>
</div>
</template>
<script>
export default {
data(){
return {
list: [{ value: 0 },{ value: 100 },{ value: 10 }]
}
},
watch:{
list(val){
console.log('list changed:', val)
}
},
methods:{
changeListObjData(){
const index = Math.floor(Math.random() * 3)
const newValue = (Math.random() * 100).toFixed(2)
this.$set(this.list[index], 'value', newValue)
// 或者把对应下标的对象整个更新
// this.$set(this.list, index, { value: newValue })
}
}
}
阅读更多
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容