记录一个开发中使用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()