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

基于el-tree實(shí)現(xiàn)懶加載穿梭條的示例代碼

 更新時間:2024年03月07日 10:07:49   作者:gyuhao_o  
這篇文章主要介紹了基于el-tree實(shí)現(xiàn)懶加載穿梭條的示例代碼,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

一、關(guān)鍵代碼 

<template>
  <div>
    <!-- 左側(cè)待選列表 -->
    <div class="left-box">
      <p>待選列表</p>
      <el-input placeholder="輸入關(guān)鍵詞過濾" v-model="leftFilterText" clearable/>
      <el-tree
        ref="treeLeft"
        :data="leftData"
        show-checkbox
        node-key="id"
        props="defaultProps"
        :load="loadNode"
        lazy
        :filter-node-method="filterNode"  
      >
      </el-tree>
    </div>
    <!-- 穿梭按鈕 -->
    <div class="oper-box">
      <el-button circle type="primary" icon="el-icon-arrow-left" @click="removeData"></el-button>
      <el-button circle type="primary" icon="el-icon-arrow-right" @click="addData"></el-button>
    </div>
    <div class="right-box">
      <p>已選列表</p>
      <el-input placeholder="輸入關(guān)鍵詞過濾" v-model="rightFilterText" clearable/>
      <el-tree
        ref="treeRight"
        :data="rightData"
        show-checkbox
        node-key="id"
        props="defaultProps"
        :filter-node-method="filterNode"  
      >
      </el-tree>
    </div>
  </div>
</template>
<script>
  data(){
    return {
      checkAll: false,
      leftFilterText: '',
      rightFilterText: '',
      defaultProps: {
        chilren: 'children',
        label: 'labelName',   // 適配后端下發(fā)的數(shù)據(jù)字段名
        isLeaf: 'leaf',   // leaf 字段判斷節(jié)點(diǎn)是否為葉子節(jié)點(diǎn)
        // 配置禁選的節(jié)點(diǎn)
        disabled: function(data, node) {
          // 如這里配置父節(jié)點(diǎn)、帶有disable屬性的節(jié)點(diǎn)禁選
          if('children' in data || data.disable) {
            return true;
          } else {
            return false;
          }
        }
      },
      leftData: [],
      rightData: []
    }
  },
  watch: {
    leftFilterText(val) {
      this.$refs.treeLeft.filter(val);
    },
    rightFilterText(val) {
      this.$refs.treeRight.filter(val);
    }
  },
  methods: {
    // 根據(jù)關(guān)鍵詞過濾節(jié)點(diǎn)
    filterNode(value, data) {
      if(!value) return true;
      // labeName 為defaultProps中配置的label值,未配置默認(rèn)為label
      return data.labeName.indexOf(value) !== -1;
    },
    // 懶加載出樹結(jié)構(gòu)的最后一層節(jié)點(diǎn)
    async loadNode(node, resolve) {
      if(node.level === 0) {
        return resolve(node.data);   // 頂層數(shù)據(jù)默認(rèn)展示
      } else {
        if(node.data.children && node.data.children.length > 0) {
          return resolve(node.data.children);
        } else {  // 最后一層數(shù)據(jù),異步懶加載
          let tempData = await this.getDynamicData(node.data.id);
          return resolve(tempData);
        }
      }
    },
    // 獲取數(shù)據(jù)接口
    getDynamicData(id) {
    },
    // 移除節(jié)點(diǎn)
    removeData() {
      // 右側(cè)選中節(jié)點(diǎn)
      let removeKeys = this.$refs.treeRight.getCheckedKeys();
      this.rightData = this.rightData.filter(item => !removeKeys.includes(item.id));
      // 左側(cè):僅保留右側(cè)列表中有的數(shù)據(jù)為勾選狀態(tài)
      let leftCheckKeys = this.rightData.map(item => item.id);
      this.$refs.treeLeft.setCheckedKeys(leftCheckKeys);
    },
    // 添加節(jié)點(diǎn)
    removeData() {
      // 獲取左側(cè)選中節(jié)點(diǎn),作為右側(cè)的數(shù)據(jù)
      let checkNodes = this.$refs.treeLeft.getCheckedNodes();
      let checkKeys = this.$refs.treeLeft.getCheckedKeys();
      this.rightData = checkNodes;
    },
  }
</script>
 

?? 過濾節(jié)點(diǎn)函數(shù):filterNode

1、watch 監(jiān)聽關(guān)鍵詞;filterNode 必須有返回值,否則數(shù)據(jù)顯示不出來;

2、關(guān)鍵詞不為空時,函數(shù)的返回值 data.labeName.indexOf(value) !== -1; 其中 labeName 為defaultProps中配置的label值,未配置默認(rèn)為label

?? 異步加載函數(shù):loadNode

根據(jù) node.level 去匹配數(shù)據(jù)層級,判斷是否需要調(diào)用接口獲取數(shù)據(jù)

?? 樣式自定義

二、最終效果:(效果圖僅供參考)

(1) 左側(cè)列表為樹形結(jié)構(gòu),且最后一級節(jié)點(diǎn)懶加載;(數(shù)據(jù)量大時,可以有效提高加載速度)

(2)右側(cè)選中的列表無樹形結(jié)構(gòu),為左側(cè)選中的所有節(jié)點(diǎn)

到此這篇關(guān)于基于el-tree實(shí)現(xiàn)懶加載穿梭條的文章就介紹到這了,更多相關(guān)el-tree懶加載穿梭條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Ant design vue table 單擊行選中 勾選checkbox教程

    Ant design vue table 單擊行選中 勾選checkbox教程

    這篇文章主要介紹了Ant design vue table 單擊行選中 勾選checkbox教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼

    vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue自定義標(biāo)簽和單頁面多路由的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 深入解析el-col-group強(qiáng)大且靈活的Element表格列組件

    深入解析el-col-group強(qiáng)大且靈活的Element表格列組件

    這篇文章主要為大家介紹了el-col-group強(qiáng)大且靈活的Element表格列組件深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 解讀vant的Uploader上傳問題

    解讀vant的Uploader上傳問題

    這篇文章主要介紹了解讀vant的Uploader上傳問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 淺談在不使用ssr的情況下解決Vue單頁面SEO問題(2)

    淺談在不使用ssr的情況下解決Vue單頁面SEO問題(2)

    這篇文章主要介紹了淺談在不使用ssr的情況下解決Vue單頁面SEO問題(2),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • VSCode中書寫Vue無代碼提示該如何解決

    VSCode中書寫Vue無代碼提示該如何解決

    vscode開發(fā)vue非常好用,因?yàn)橛泻芏嗟牟寮?可以補(bǔ)全語法,或者高亮便于檢查錯誤,但我最近發(fā)現(xiàn)我的vscode卻沒有了代碼提示,這篇文章主要給大家介紹了關(guān)于VSCode中書寫Vue無代碼提示該如何解決的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 詳解vue組件之間的通信

    詳解vue組件之間的通信

    這篇文章主要介紹了vue組件之間的通信,幫助大家更好的理解和學(xué)習(xí)前端的相關(guān)知識,感興趣的朋友可以了解下
    2020-08-08
  • 關(guān)于vue屬性使用和不使用冒號的區(qū)別說明

    關(guān)于vue屬性使用和不使用冒號的區(qū)別說明

    這篇文章主要介紹了關(guān)于vue屬性使用和不使用冒號的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue中$router和$route的區(qū)別詳解

    Vue中$router和$route的區(qū)別詳解

    在 Vue.js 中,$router 和 $route 是兩個常用的對象,用于處理路由相關(guān)的操作,下面小編就來和大家介紹一下$router 和 $route 的區(qū)別以及如何使用它們吧
    2023-06-06
  • vue-router中query取值的坑及解決

    vue-router中query取值的坑及解決

    這篇文章主要介紹了vue-router中query取值的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

电白县| 红河县| 淮北市| 新龙县| 邵东县| 襄城县| 崇阳县| 财经| 邻水| 余姚市| 陕西省| 江源县| 旬阳县| 库车县| 红桥区| 泰安市| 桃园县| 伊通| 台中市| 峨边| 光山县| 望江县| 拜泉县| 腾冲县| 卫辉市| 保德县| 湘潭县| 浦江县| 安乡县| 平罗县| 康定县| 昭苏县| 伊通| 锡林郭勒盟| 怀宁县| 福贡县| 梨树县| 长兴县| 长垣县| 新丰县| 宝清县|