elementUI select多級聯動
阿新 • • 發佈:2018-12-11
需求:編輯時將值回顯,若某一級修改,之後的全部清空
實現:通過watch監聽值的改變,若改變,清空後一級的值,並呼叫方法請求下一級的option
問題:編輯賦值的時候也會觸發watch,導致只能講第一級的值回顯,之後的被清空
解決:在select上添加回調方法visible-change,可以得到當前改變的值是編輯回顯還是使用者手動修改,通過一個變數控制,從而控制是否需要清空
程式碼:
dom:
<el-form-item label="樓盤地址"> <el-select v-model="form.province" placeholder="請選擇省份" size="mini" value-key="id" @visible-change="handleChangeFlag"> <el-option v-for="(item, index) in provinceOption" :key="index" :label="item.areaName" :value="item"></el-option> </el-select> </el-form-item> <el-form-item> <el-select v-model="form.city" placeholder="請選擇城市" size="mini" value-key="id" @visible-change="handleChangeFlag"> <el-option v-for="(item, index) in cityOption" :key="index" :label="item.areaName" :value="item"></el-option> </el-select> </el-form-item> <el-form-item> <el-select v-model="form.area" placeholder="請選擇區縣" size="mini" value-key="id" @visible-change="handleChangeFlag"> <el-option v-for="(item, index) in countyOption" :key="index" :label="item.areaName" :value="item"></el-option> </el-select> </el-form-item> <el-form-item> <el-input v-model="form.projectaddress" placeholder="請輸入詳細資訊" size="mini"></el-input> </el-form-item>
js:
新增變數:
changeFlag: false
watch: { 'form.province'(e) { if( this.changeFlag ){ this.form.city = {} } if( e && e.id ){ this.handleGetCityList({ parentId: e.id }) } }, 'form.city'(e) { if( this.changeFlag ){ this.form.area = {} } if( e && e.id ){ this.handleGetAreaList({ parentId: e.id })z } }, 'form.area'(e) { if( this.changeFlag ){ this.form.projectaddress = '' } } },
handleChangeFlag(type) {// select回撥,判斷當前下拉框是否展示
this.changeFlag = type;
}