(Vue2)v-model绑定对象值改变,视图更新不及时

588 阅读1分钟

需求:默认选择状态"02"。
我想那就在created里用this.forms.status = "02"赋值呗,是我太菜了😐,值是改了,视图更新不及时🙃。

  <a-select
    placeholder="请选择"
    v-model="forms.status"
  >
    <a-select-option
      v-for="(item, index) in statusList"
      :value="item.itemValue"
      :key="index"
    >
      {{ item.itemName }}
    </a-select-option>
  </a-select>
  data() {
    return {
      forms: {},
    };
  },
  created() {
    this.forms.status = "02"; //这样不行!不可!
  },

亲测有效的解决方案:

  1. 强制刷新this.$forceUpdate()(👍真的万能)

利用@change,选择的值一改变,就强制刷新视图。

  <a-select
    placeholder="请选择"
    v-model="forms.status"
    @change="statusChange"
  >
    <a-select-option
      v-for="(item, index) in statusList"
      :value="item.itemValue"
      :key="index"
    >
      {{ item.itemName }}
    </a-select-option>
  </a-select>
  data() {
    return {
      forms: {},
    };
  },
  methods: {
    statusChange() {
      this.$forceUpdate();
    },
  }
  1. 在对象里面赋值(🍒两种思路)

① 在 data 中设置好默认值

  data() {
    return {
      forms: { status: "02" },
    };
  },

② 在 created 中赋值

  data() {
    return {
      forms: {},
    };
  },
  created() {
    this.forms = { status: "02" };
  },
  1. 利用this.$set
  data() {
    return {
      forms: {},
    };
  },
  created() {
    this.$set(this.forms, 'status', '02')
  },