最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Element-UI中<el-cascader?/>回顯失敗問題的完美解決

 更新時(shí)間:2023年01月31日 11:05:07   作者:深擁i小褚  
我們?cè)谑褂胑l-cascader控件往數(shù)據(jù)庫保存的都是最后一級(jí)的數(shù)據(jù),那如果再次編輯此條數(shù)據(jù)時(shí),直接給el-cascader傳入最后一級(jí)的數(shù)據(jù),它是不會(huì)自動(dòng)勾選的,下面這篇文章主要給大家介紹了關(guān)于Element-UI中<el-cascader?/>回顯失敗問題的完美解決辦法,需要的朋友可以參考下

項(xiàng)目場景:

項(xiàng)目場景:接手了一些老項(xiàng)目,需要做一些日志相關(guān)的操作,從后臺(tái)日志跳轉(zhuǎn)到相應(yīng)頁面要帶上原來的請(qǐng)求參數(shù),涉及到一個(gè)回顯問題

問題描述

Element-UI的 <el-cascader /> 這個(gè)組件,賦值之后它不會(huì)回顯!而且后端返回的值只有最后一級(jí)的id,可是一個(gè)勁看文檔、找資料浪費(fèi)大半天,所以總結(jié)了一個(gè)比較完美的辦法

原因分析:

value 屬性才是回顯的關(guān)鍵,只有綁定了value屬性才會(huì)讓 <el-cascader /> 回顯(單選情況下是一維數(shù)組、多選是二維數(shù)組),而且數(shù)組中的值一定是最后一級(jí)的id加上它父級(jí)的id組成

在這里放一下模擬的數(shù)據(jù)

depart_check: [],
options: [
	{
	    value: 1,
	    label: '東南',
	    children: [
	    	{
		        value: 11,
		        label: '上海',
		        children: [{
		            value: 111,
		            label: '黃浦區(qū)'
		        }, {
		            value: 112,
		            label: '靜安區(qū)'
		        }, {
		            value: 113,
		            label: '虹口區(qū)'
		        }, {
		            value: 114,
		            label: '長寧區(qū)'
		        }]
		    }, {
		        value: 12,
		        label: '江蘇',
		    }, {
		        value: 13,
		        label: '浙江',
		    }
	    ]
	}, 
	{
	    value: 2,
	    label: '西北',
	    children: [{
	        value: 21,
	        label: '陜西',
	    }, {
	        value: 22,
	        label: '新疆維吾爾族自治區(qū)',
	    }]
	}
]

解決方案:

由于后端返回來的只有最后一級(jí)的id,所以我們需要寫一個(gè)遞歸來拿到最后一級(jí)id和它父級(jí)id的數(shù)組
廢話不多說直接上代碼

/*
* @param  list 數(shù)據(jù)列表
* @param  id 后端返回的id
**/
getParentsById(list, id) {
    for (let i in list) {
        if (list[i].value == id) {
            //查詢到就返回該數(shù)組對(duì)象的value
            return [list[i].value]
        }
        if (list[i].children) {
            let node = this.getParentsById(list[i].children, id)
            if (node !== undefined) {
                //查詢到把父節(jié)把父節(jié)點(diǎn)加到數(shù)組前面
                node.unshift(list[i].value)
                return node
            }
        }
    }
},

方法有了之后就開始解決問題

一、多選賦值回顯

因?yàn)槎噙x的時(shí)候綁定的value是個(gè)二維數(shù)組
比如隨便選倆,change事件拿到的值就是[[1,11,111], [1,12] ]

// 選擇單位
  handlechangedepatt(v) {
  	  console.log(v)
      this.depart_check = v
  },

因?yàn)楹蠖酥粫?huì)返回來111、12兩個(gè)值還是字符串格式"111,12",所以處理開始

	let _depart_check = data.depart_id ? data.depart_id.split(",").map(i => Number(i)) : []
	let _arr = []
	// 使用上面寫的方法 getParentsById 找出父級(jí)id并組合
	_depart_check && _depart_check.map(i => _arr.push(this.getParentsById(this.options, i)))
	console.log("_arr: ",_arr)
	this.depart_check = _arr

控制臺(tái)打印拿到的_arr,完美和change事件里拿到的值是一個(gè)格式,這樣回顯就完成了

這里有一個(gè)小問題就是,拿到的id可能很多個(gè),getParentsById方法只能一個(gè)一個(gè)找父級(jí)id,所以需要依次獲取

二、單選賦值回顯

方法和多選類似,因?yàn)閱芜xchange選中的值是一位數(shù)組,比如:[ 1,11,111 ]所以當(dāng)拿到后端id之后不需要太多處理,只需要根據(jù)id和數(shù)據(jù)拿到一個(gè)一維數(shù)組的數(shù)據(jù)就行了,就不多解釋了

	let _depart_check = data.depart_id || ""
	let _arr = []
	_arr = this.getParentsById(this.options, _depart_check )
	this.depart_check = _arr

總結(jié)

以上就是el-cascader回顯失敗的解決辦法,可能有些小地方不夠嚴(yán)謹(jǐn),但是大問題得到了解決。

到此這篇關(guān)于Element-UI中<el-cascader />回顯失敗問題的完美解決的文章就介紹到這了,更多相關(guān)el-cascader回顯失敗解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何解決vue在ios微信

    如何解決vue在ios微信"復(fù)制鏈接"功能問題

    這篇文章主要介紹了如何解決vue在ios微信"復(fù)制鏈接"功能問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Vue之事件處理和事件修飾符詳解

    Vue之事件處理和事件修飾符詳解

    這篇文章主要為大家介紹了Vue之事件處理和事件修飾符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-11-11
  • vue2.0開發(fā)實(shí)踐總結(jié)之疑難篇

    vue2.0開發(fā)實(shí)踐總結(jié)之疑難篇

    這篇文章主要為大家總結(jié)了vue2.0開發(fā)實(shí)踐的疑難,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • vue實(shí)現(xiàn)目錄樹結(jié)構(gòu)

    vue實(shí)現(xiàn)目錄樹結(jié)構(gòu)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)目錄樹結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue.use()和Vue.prototype使用詳解

    Vue.use()和Vue.prototype使用詳解

    Vue.use()主要用于注冊(cè)全局插件,當(dāng)插件具有install方法時(shí),調(diào)用Vue.use()可以全局使用該插件,Vue.prototype用于注冊(cè)全局變量,這些變量在項(xiàng)目任何位置都可以通過this.$變量名訪問,兩者的主要區(qū)別在于Vue.use()用于插件,Vue.prototype用于變量
    2024-10-10
  • 詳解新手使用vue-router傳參時(shí)注意事項(xiàng)

    詳解新手使用vue-router傳參時(shí)注意事項(xiàng)

    這篇文章主要介紹了詳解新手使用vue-router傳參時(shí)注意事項(xiàng),詳細(xì)的介紹了幾種常見錯(cuò)誤,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    今天小編就為大家分享一篇vue完成項(xiàng)目后,打包成靜態(tài)文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 在Vue3中使?echarts?圖表寬度自適應(yīng)變化的操作方法

    在Vue3中使?echarts?圖表寬度自適應(yīng)變化的操作方法

    本文介紹了在Vue3中使用ECharts時(shí),如何使圖表容器寬度自適應(yīng)頁面大小,通過修改模板中的div樣式,將寬度設(shè)置為100%,并監(jiān)聽窗口大小變化事件,調(diào)用ECharts實(shí)例的resize方法,實(shí)現(xiàn)圖表的自適應(yīng)調(diào)整,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Vue+webpack項(xiàng)目配置便于維護(hù)的目錄結(jié)構(gòu)教程詳解

    Vue+webpack項(xiàng)目配置便于維護(hù)的目錄結(jié)構(gòu)教程詳解

    新建項(xiàng)目的時(shí)候創(chuàng)建合理的目錄結(jié)構(gòu)便于后期的維護(hù)是很重要。這篇文章主要介紹了Vue+webpack項(xiàng)目配置便于維護(hù)的目錄結(jié)構(gòu) ,需要的朋友可以參考下
    2018-10-10
  • VUE v-model表單數(shù)據(jù)雙向綁定完整示例

    VUE v-model表單數(shù)據(jù)雙向綁定完整示例

    這篇文章主要介紹了VUE v-model表單數(shù)據(jù)雙向綁定,結(jié)合完整實(shí)例形式分析了vue.js實(shí)現(xiàn)表單數(shù)據(jù)雙向綁定相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

翼城县| 宝应县| 北安市| 仁寿县| 城步| 衢州市| 商水县| 辰溪县| 张掖市| 封开县| 门头沟区| 张家界市| 乐安县| 平度市| 云霄县| 龙岩市| 扶余县| 慈利县| 阳山县| 永德县| 仙桃市| 楚雄市| 凤翔县| 富平县| 剑阁县| 衡南县| 永定县| 葵青区| 吉林省| 靖远县| 临夏县| 乐清市| 桃园市| 琼中| 赤城县| 清水河县| 和平区| 甘德县| 石台县| 斗六市| 桦南县|