element的select下拉框设定初值后,不能重新选择的问题

记录一个开发中使用element ui遇到的问题,在给select 赋予初始值的时候,不能修改,准确说,data中的值已经改变了,但视图上没有更新。

<el-select
  clearable
  size="mini"
  placeholder="理由"
  v-model="reason[scope.row.id]"
  multiple
>
  <el-option
    v-for="item in options[name]"
    :key="item.value"
    :label="item.label"
    :value="item.value"
  ></el-option>
</el-select>

在网上找了很多,发现都不能解决问题,比如$forceUpdate(),因为根本就无法出发select的change事件,最后发现是在初始赋值时出现了问题,因为select绑定的是一个对象的属性,因此使用普通的=赋值后,vue不能检测到对象属性的修改,所以在初始赋值时,先使用$set()初始化。

this.$set(this.reason, row.id, []);
if (row.is_pass == 0) {
  this.$set(this.reason, row.id, row.reason.split(","));
}

所以,重点就是设置初始值时一定要使用$set()

 

posted @ 2020-02-29 18:11  守望人间  阅读(2438)  评论(0编辑  收藏  举报