vue computed计算不到数组或者对象的变化
2024-01-09 16:29:34
form: {
...
childQuestionItems:[
...
{
...
score: 6
}
]
}
...
computed: {
totalScore(){
return this.form.childQuestionItems.reduce((sum,e)=> sum + Number(e.score || 0), 0)
}
}
想要computed 监听计算form.childQuestionItems
改变后所有score
的和
但是 computed并不监听。
原因
对象:
向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = ‘hi’)
数组:
Vue 不能检测以下数组的变动:
当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength
解决
Vue.set( target, key, value),
target: 要更改的数据源(可以是对象或者数组)
key: 要更改的具体数据
value: 重新赋的值。
// 或
Array.prototype.splice
splice(start, deleteCount, item1)
this.$set(this.form.childQuestionItems,this.form.childQuestionItems[questionIndex],form)
另一种方式
添加一个标记属性,当所要监听对象改变后标记属性值+1 ,computed
计算标记属性。
文章来源:https://blog.csdn.net/w710537643/article/details/135482456
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!