之前写过一遍《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来设置双向绑定

Logo

前往低代码交流专区

更多推荐