問題
ElementUI el-select多選下拉框,回顯數據后無法重新選擇和修改,點擊選擇和刪除都沒有反應,頁面也沒有報錯
方案一
網上搜出來的基本上都是這個解決辦法,但是我設置后沒有生效,還是無法選擇和修改
原因 下拉框數據是循環別的接口得來的,因為數據層次太多,render函數沒有自動更新,需手動強制刷新。
@change="$forceUpdate()"
添加位置如下
<el-select v-model="form.sourceOrg" style="width:100%" multiple placeholder="請選擇所屬應用" @change="$forceUpdate()"><el-optionv-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)
修改后,解決此問題,回顯數據后下拉框可以重新選擇和修改