1、what?
在使用Cascader 級聯選擇器中的el-cascader組件進行級聯效果實現的時候,想要實現級聯選擇器中根據指定條件默認選中級聯選項的效果,但是設置完默認選項之后雖然可以顯示預想的效果,但是總是會報以上的錯誤。
2、why?
因為Cascader下拉進行顯示的數據是由后臺接口進行提供,在進行默認值顯示修改時,將后臺返回的數據賦值給v-model綁定的數據,進行如此的賦值是能夠實現默認值改變顯示的,但是在改變榜單類型后,Cascader的options動態的進行了改變,使得Cascader的綁定數值在下拉選項中不存在。總之就是因為點擊或者選中了父節點改變了菜單的類型,從而options進行動態得改變了,改變之后因為沒有了這個父節點就會產生報錯。當然,只要activePath 不改變就會產生報錯。
在改變菜單類型,然后options改變之后,只需要通過重新渲染Cascader組件就可以解決了。
我使用了如下的方法進行重新渲染Cascader解決的:
給Cascader設置了一個key值(注意需要在先初始化:optionsKey: 1)
具體如下:
<el-cascader
:key="optionsKey"
:options="options"
:props="optionProps"
v-model="classData"
@change="classChange"
clearable
></el-cascader>
data () {
return {
optionsKey: 1,//聯級選擇的key
optionsData: [],
options: [], // 菜單目錄
classData: [], // 選中的菜單分類
}
}
每次請求菜單時,都key都+1 , ++this.optionsKey
getClassData () {
this.$api.post('/statistics/getqualitytab', {}, (res) => {
if (res.status) {
++this.optionsKey
this.optionsData = res.data
if (this.titleId === 1) {
this.options = this.optionsData.filter((item) => {
return item.id !== '33'
})
} else {
this.options = this.optionsData.filter((item) => {
return item.id === '33'
})
}
} else {
this.$notify.warning({
title: '提示',
message: res.msg
})
}
})
},