之前写过一遍《vue通过后端返回值动态生成表单及动态表单的数据提交
》提交动态表单数据没有问题。但是要更新数据,请求后端数据渲染表单并赋值后,发现radio/checkbox
等组件无法手动选中,排查知道原因是双向绑定失效
一、复现问题
- 1、正常的情况
<van-checkbox-group v-model="result" :max="2">
<van-checkbox name="a">复选框 a</van-checkbox>
<van-checkbox name="b">复选框 b</van-checkbox>
</van-checkbox-group>
export default {
data() {
return {
result: ['a', 'b'],
};
},
};
- 2、绑定失效的情况
这个情况,因为没有声明result这一变量,装载组件的时候没有双向绑定装载这个变量;所以后续直接是给未声明的普通变量赋值,并不是双向绑定的变量
<van-checkbox-group v-model="result" :max="2">
<van-checkbox name="a">复选框 a</van-checkbox>
<van-checkbox name="b">复选框 b</van-checkbox>
</van-checkbox-group>
export default {
data() {
return {
};
},
mounted() {
this.result =['a', 'b']
}
};
二、解决方案
使用this.$set来设置双向绑定