代码大概是这个样子的:<input type="checkbox" v-model="selectAllList[Index]" />
`
computed: {
selectAllList: {
get(){},
set(){
console.log('set');
}
}}
`
其中selectAllList的get其实就是依赖于一个数组,数组中的每一个值都是一个数组。当该数组的值全为true时,则selectAllList对应位置的值为true。也就是实现一个联动的效果。
`
{
List : [ [ false , false ] , [ true , true , true ] , [ false , true ] ],
selectAllList: [ false , true , false ]
}
`
相应的,我想要实现当改变selectAllList中的值的时候,也要改变对应数组List中的值,因此需要用set来改变。
但是现在不知道为什么改变v-model的值,setter不会触发。是因为我v-model绑定的是一个数组中的某一个值,引用对象值的改变不会触发到setter。那么应该如何绑定呢?
造成这个的原因是:由于 JavaScript 的限制,Vue 不能检测数组的变动:
vm.items[indexOfItem] = newValue
vm.items.length = newLength
你的需求应该是要做一个 全选/反选 的功能吧,总共有两层全选/反选的
checkbox
。