在工做中遇到這樣一個問題,新建表單時用element的select多選之後,在編輯的時候打開表單發現其餘數據能正常顯示,多選卻沒法正常回顯。在網上找了不少後,終於解決了這個問題,下面把百度的方法總結一下。數組
首先:表單中函數
<el-select v-model="textForm.receDeptIds" multiple filterable allow-create default-first-option placeholder="請選擇接收部門"> <el-option v-for="item in deptData" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select>
其次,methods中這樣寫:this
// 編輯 handleEdit(data){ this.textShow=true; this.textForm=data; this.changeSelect(data); //觸發此方法 }, changeSelect(data){ let UserIds=data.receUserIds.toString(); let peoData=UserIds.split(','); for(var i=0;i<peoData.length;i++) { peoData[i]=parseInt(peoData[i]); } this.textForm.receUserIds=peoData; let DetptIds=data.receDeptIds.toString(); let dpData=DetptIds.split(','); for(var i=0;i<dpData.length;i++) { dpData[i]=parseInt(dpData[i]); } this.textForm.receDeptIds=dpData; },
總結:changeSelect方法是在打開編輯表單後,對select多選選擇器返顯內容做處理的方法。
定義數組UserIds,將拿到的數據先作一個toString後再賦值給UserIdS(不這樣作,直接賦值的話,控制檯會一直報split不是一個函數的錯誤)。
用split方法將UserIds轉換爲逗號分隔的數組,對peoData做循環操做,每一個元素去除雙引號(parseInt方法轉一下就好)。最終賦值給receUserIds。這樣多選器裏的數據就能正常返顯了。
最後,真的感謝萬能的網友。code