问题

ElementUI el-select多选下拉框,回显数据后无法重新选择和修改,点击选择和删除都没有反应,页面也没有报错

方案一

网上搜出来的基本上都是这个解决办法,但是我设置后没有生效,还是无法选择和修改

原因 下拉框数据是循环别的接口得来的,因为数据层次太多,render函数没有自动更新,需手动强制刷新。

@change="$forceUpdate()"

添加位置如下

<el-select v-model="form.sourceOrg" style="width:100%" multiple placeholder="请选择所属应用" @change="$forceUpdate()">
  <el-option
    v-for="item in appOptions"
    :key="item.id"
    :label="item.appName"
    :value="item.id"
  />
</el-select>

方案二(解决)

最后通过使用this.$set赋值解决了该问题

this.$set能够实现什么功能

官方解释:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hello,ningzaichun')

简单说即是:当你发现你给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,也许这个时候就需要用到this.$set()这个方法了

原来的赋值方式

this.form.sourceOrg = []
this.form.sourceOrgs.forEach(item => {
    this.form.sourceOrg.push(tem.appPriId)
})

改为

var as = []
this.form.sourceOrgs.forEach(item => {
    as.push(item.appPriId)
})
this.$set(this.form, 'sourceOrg', as)

修改后,解决此问题,回显数据后下拉框可以重新选择和修改

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐