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

element-ui動態(tài)級聯(lián)選擇器回顯問題詳解(二十多行代碼搞定)

 更新時(shí)間:2023年03月01日 11:26:05   作者:霧戀  
大家在使用element-ui的時(shí)候肯定會遇到這樣一個(gè)問題,就是在你使用級聯(lián)選擇器的回顯問題,下面這篇文章主要給大家介紹了關(guān)于element-ui動態(tài)級聯(lián)選擇器回顯問題的相關(guān)資料,需要的朋友可以參考下

場景描述

后臺返回類目數(shù)組,其中有一級類目;二級類目,三級類目;這種情況下如何回顯數(shù)據(jù)

效果圖如下:

先給大家展示一些數(shù)據(jù)結(jié)構(gòu),后面會給大家一一講解;尤其是回顯那部分

數(shù)據(jù)結(jié)構(gòu)如下:

  • id:自己的id
  • level:等級
  • pid:父級id,0位第一級
  • name:名字
[
    {
    	id:1, level:0,pid:0,name:'測試1'            
    },
    {
    	id:2, level:0,pid:0,name:'測試2'            
    },
    {
    	id:11, level:1,pid:1,name:'測試1-1'            
    },
    {
    	id:12, level:2,pid:11,name:'測試1-1-1'            
    }
]

先貼上html部分

<el-cascader :props="categoryProps" 
            v-model="cascaderData"></el-cascader>

然后再貼上data數(shù)據(jù)中的部分

這兒需要注意幾個(gè)點(diǎn):

label、value需要改為你數(shù)據(jù)結(jié)構(gòu)一致的字段;

lazyLoad函數(shù)中的node有許多參數(shù),如果目前的不能滿足你的需求;你可以查看里面的一些參數(shù)是否有你需要的數(shù)值;

現(xiàn)在data中的lazyLoad函數(shù)主要是一些默認(rèn)值;

      cascaderData: '12',
      categoryProps: {
        emitPath: false,
        label:'name', // 字段必須統(tǒng)一
        value:'id', // 字段必須統(tǒng)一
        lazy: true,
        lazyLoad (node, resolve) {
          const { level,value } = node;
          console.log(value);
          let nodes = [];
          if (level == 0) { // 第一級
            nodes = catalogueList.filter(v=>{return v.level == 0});
          }else { // 后面兩級
            nodes = catalogueList.filter(v=>{return v.pid == value});
          };

          resolve(nodes.map(v=>({
            id: v.id,
            name: v.name,
            leaf: level >= 2
          })));
        }
      }, // 級聯(lián)選擇器顯示數(shù)據(jù)

回顯的方法:

將以下方法賦值給lazyLoad函數(shù)即可實(shí)現(xiàn)回顯了;

邏輯:

  1. cascaderData:是選擇的參數(shù)最后一級id
  2. value:我們在選擇是(鼠標(biāo)點(diǎn)擊選擇的)會觸發(fā)并返回id,如果沒有選擇點(diǎn)擊,則返回undefined(我們就在這兒進(jìn)行判斷是回顯還是手動觸發(fā))
  3. 先說回顯:threeFind:我們根據(jù)有的最后一級id(cascaderData),去查找改數(shù)據(jù)并查詢到他父級(twoFind);然后根據(jù)他父級查找到(第三級)的所有數(shù)據(jù)(threeData)
  4. 然后根據(jù)二級數(shù)據(jù)(twoFind)去查找一級(oneFind),然后根據(jù)一級(oneFind)查找到二級的所有數(shù)據(jù);一級不用查(level==0)全是
  5. 這個(gè)時(shí)候開始將對應(yīng)(二級,三級)的數(shù)據(jù)放到children下面;children是默認(rèn)的值;會自動去查找
  6. 在放置第三級的數(shù)據(jù)的時(shí)候需要注意一個(gè)值:leaf,為true時(shí)就是結(jié)束;也必須寫這個(gè);否則選擇器不會顯示,但是展開的時(shí)候是顯示狀態(tài)
  7. 現(xiàn)在回顯也完成了;但是我們從二級或者一級選擇分類的時(shí)候,會出現(xiàn)一級或者二級數(shù)據(jù)跑到二級或者三級目錄下等清楚;這個(gè)時(shí)候就需要將選中的數(shù)據(jù)查找到
  8. 然后將其子集的數(shù)據(jù)查找出來;并判斷如果是第三級就leaf:true;即可完成
  9. 趕緊去試試吧!
    setLazyLoad(node, resolve) {
      const { level,value } = node;
      const cascaderData = this.cascaderData;
      // 第一級數(shù)據(jù)
      let nodes = [];

      nodes = catalogueList.filter(v=>{return v.level == 0});
      // 選中的第三級某位數(shù)據(jù)
      const threeFind = catalogueList.find(v=>{return v.id == cascaderData});
      if (value) {
        // 查詢數(shù)據(jù)
        const unknownFind = catalogueList.find(v=>v.id == value);

        if (level == 1) {
          let twoData = catalogueList.filter(v=>v.pid == unknownFind.id);
          nodes = twoData; // 第二級
        }else if (level == 2) {
          let threeData = catalogueList.filter(v=>v.pid == unknownFind.id);
          nodes = threeData.map(v=>{return {id:v.id,name:v.name,level:v.level,leaf:true}}); // 第三級
        };
      }else {
        // 選中的第二級某位數(shù)據(jù)
        let twoFind = catalogueList.find(v=>v.id == threeFind.pid);
        // 第三級數(shù)據(jù)
        let threeData = catalogueList.filter(v=>v.pid == twoFind.id);
        // 選中的第一級某位數(shù)據(jù)
        const oneFind = catalogueList.find(v=>{return v.id == twoFind.pid});
        // 第二級數(shù)據(jù)
        let twoData = catalogueList.filter(v=>{return v.pid == oneFind.id});
        // nodes = nodes.map(v=>{return {id:v.id,name:v.name,level:v.level}}); // 第一級
        const oneIndex = nodes.findIndex(v=>{return v.id == oneFind.id});
  
        nodes[oneIndex].children = twoData; // 第二級
  
        const twoIndex = nodes[oneIndex].children.findIndex(v=>v.id == twoFind.id);
        nodes[oneIndex].children[twoIndex].children = threeData.map(v=>{ // 第三季
          return {
            id:v.id,
            name:v.name,
            level:v.level,
            leaf: true,
          }
        });
      }

      resolve(nodes);
    },

總結(jié)

到此這篇關(guān)于element-ui動態(tài)級聯(lián)選擇器回顯問題解決的文章就介紹到這了,更多相關(guān)element-ui動態(tài)級聯(lián)選擇器回顯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue配置接口域名方法總結(jié)

    vue配置接口域名方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于vue配置接口域名方法和相關(guān)知識點(diǎn)總結(jié),需要的朋友們跟著操作下。
    2019-05-05
  • Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式

    Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式

    這篇文章主要介紹了Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 在vue項(xiàng)目中引入高德地圖及其UI組件的方法

    在vue項(xiàng)目中引入高德地圖及其UI組件的方法

    今天小編就為大家分享一篇在vue項(xiàng)目中引入高德地圖及其UI組件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 利用Vue Native構(gòu)建移動應(yīng)用的全過程記錄

    利用Vue Native構(gòu)建移動應(yīng)用的全過程記錄

    VueNative是一個(gè)使用JavaScript構(gòu)建跨平臺原生移動應(yīng)用程序的框架m這篇文章主要給大家介紹了關(guān)于如何利用Vue Native構(gòu)建移動應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法

    webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法

    下面小編就為大家分享一篇webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue頁面中使用getElementsByClassName無法獲取元素的解決

    vue頁面中使用getElementsByClassName無法獲取元素的解決

    這篇文章主要介紹了vue頁面中使用getElementsByClassName無法獲取元素的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue新搭檔TypeScript快速入門實(shí)踐記錄

    Vue新搭檔TypeScript快速入門實(shí)踐記錄

    TypeScript 是一種由微軟開發(fā)的自由和開源的編程語言,它是 JavaScript 的一個(gè)超集,擴(kuò)展了 JavaScript 的語法。這篇文章主要介紹了Vue新搭檔TypeScript快速入門實(shí)踐,需要的朋友可以參考下
    2021-06-06
  • 在vue-cli中組件通信的方法

    在vue-cli中組件通信的方法

    本篇文章主要介紹了在vue-cli中組件通信的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • VUE搭建手機(jī)商城心得和遇到的坑

    VUE搭建手機(jī)商城心得和遇到的坑

    這篇文章主要介紹了VUE搭建手機(jī)商城心得和遇到的坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue2中Print.js的使用超詳細(xì)講解(pdf、html、json、image)

    vue2中Print.js的使用超詳細(xì)講解(pdf、html、json、image)

    項(xiàng)目中有用到打印功能,網(wǎng)上就找了print.js,下面這篇文章主要給大家介紹了關(guān)于vue2中Print.js使用(pdf、html、json、image)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03

最新評論

屯门区| 天镇县| 姚安县| 丹巴县| 左云县| 桦甸市| 鹰潭市| 塔城市| 左贡县| 岫岩| 辽阳市| 景东| 道真| 铅山县| 台安县| 衡阳县| 古交市| 郧西县| 鹰潭市| 遵化市| 浠水县| 乳山市| 石台县| 西贡区| 太保市| 兴文县| 东阿县| 石景山区| 航空| 讷河市| 忻城县| 承德县| 孙吴县| 盐亭县| 长治市| 湘潭市| 景宁| 来安县| 新巴尔虎左旗| 抚顺市| 巴林左旗|