1 问题简介
使用<el-select><el-option></el-option></el-select>下拉框时,修改了options数组的值。
从控制台中可以看到options中的值已经变化,但是页面展示仍为旧数据,没有变化
<el-select
  ref="select"
  v-model="value"
  placeholder="请选择"
  style="width: 250px"
>
    <el-option
     v-for="item in options"
     :key="item.id"
     :label="item.label"
     :value="item.value"
    >
    </el-option>
</el-select>
2 问题分析
1)可能性1
:value="item.value"这里绑定的value值的格式类型和v-model="value"这里的value的格式类型不一样,如前面的是数字,后面的是字符串
发现格式类型没问题
2)可能性2
vue监听动态属性的变化错误,没有监听到值的变化,渲染失败
3 解决方案
针对可能性2
1)方案1
在el-select上绑定change方法,在选项值发生变化时进行$set赋值
changeData(val) { // 此处val为value的值
        if(val){
            this.$set(this.form, this.form.year, val)
        }else{
            this.$set(this.form, this.form.year, '')
        }
    }
2)方案2
使用$foreceUpdate()每当值发生变化时进行强制渲染
我采用的这种方案,有效
changeData() { // 修改时没有监听到变化,强制渲染可以解决
      this.$forceUpdate()
}