欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于el-tree實現懶加載穿梭條的示例代碼

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

一、關鍵代碼 

<template>
  <div>
    <!-- 左側待選列表 -->
    <div class="left-box">
      <p>待選列表</p>
      <el-input placeholder="輸入關鍵詞過濾" 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="輸入關鍵詞過濾" 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ā)的數據字段名
        isLeaf: 'leaf',   // leaf 字段判斷節(jié)點是否為葉子節(jié)點
        // 配置禁選的節(jié)點
        disabled: function(data, node) {
          // 如這里配置父節(jié)點、帶有disable屬性的節(jié)點禁選
          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: {
    // 根據關鍵詞過濾節(jié)點
    filterNode(value, data) {
      if(!value) return true;
      // labeName 為defaultProps中配置的label值,未配置默認為label
      return data.labeName.indexOf(value) !== -1;
    },
    // 懶加載出樹結構的最后一層節(jié)點
    async loadNode(node, resolve) {
      if(node.level === 0) {
        return resolve(node.data);   // 頂層數據默認展示
      } else {
        if(node.data.children && node.data.children.length > 0) {
          return resolve(node.data.children);
        } else {  // 最后一層數據,異步懶加載
          let tempData = await this.getDynamicData(node.data.id);
          return resolve(tempData);
        }
      }
    },
    // 獲取數據接口
    getDynamicData(id) {
    },
    // 移除節(jié)點
    removeData() {
      // 右側選中節(jié)點
      let removeKeys = this.$refs.treeRight.getCheckedKeys();
      this.rightData = this.rightData.filter(item => !removeKeys.includes(item.id));
      // 左側:僅保留右側列表中有的數據為勾選狀態(tài)
      let leftCheckKeys = this.rightData.map(item => item.id);
      this.$refs.treeLeft.setCheckedKeys(leftCheckKeys);
    },
    // 添加節(jié)點
    removeData() {
      // 獲取左側選中節(jié)點,作為右側的數據
      let checkNodes = this.$refs.treeLeft.getCheckedNodes();
      let checkKeys = this.$refs.treeLeft.getCheckedKeys();
      this.rightData = checkNodes;
    },
  }
</script>
 

?? 過濾節(jié)點函數:filterNode

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

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

?? 異步加載函數:loadNode

根據 node.level 去匹配數據層級,判斷是否需要調用接口獲取數據

?? 樣式自定義

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

(1) 左側列表為樹形結構,且最后一級節(jié)點懶加載;(數據量大時,可以有效提高加載速度)

(2)右側選中的列表無樹形結構,為左側選中的所有節(jié)點

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

相關文章

  • 詳解nginx配置vue h5 history去除#號

    詳解nginx配置vue h5 history去除#號

    這篇文章主要介紹了詳解nginx配置vue h5 history去除#號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 詳解關于vue-area-linkage走過的坑

    詳解關于vue-area-linkage走過的坑

    這篇文章主要介紹了詳解關于vue-area-linkage走過的坑,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Vue2+Echarts實現多種圖表數據可視化Dashboard(附源碼)

    詳解Vue2+Echarts實現多種圖表數據可視化Dashboard(附源碼)

    本篇文章主要介紹了詳解Vue2+Echarts實現多種圖表數據可視化Dashboard(附源碼),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Vue源碼makeMap函數深入分析

    Vue源碼makeMap函數深入分析

    vue源碼中的makeMap用在很多地方,主要是判斷標簽是原生標簽還是用戶自定義的組件,但是標簽很多,如果每判斷一次都執(zhí)行一次循環(huán),累計下來,性能損耗還是很大的,makeMap就是解決這個問題出現的
    2022-08-08
  • 使用Vue與WebSocket創(chuàng)建實時通知系統(tǒng)

    使用Vue與WebSocket創(chuàng)建實時通知系統(tǒng)

    在現代應用開發(fā)中,實時性已成為用戶體驗的一個重要組成部分,ue 作為一款流行的前端框架,配合 WebSocket,可以輕松構建實時通知系統(tǒng),在本文中,我們將通過一個簡單的示例,使用 Vue 3 的 Composition API(setup 語法糖)來創(chuàng)建一個實時通知系統(tǒng)
    2024-11-11
  • vue單頁應用在頁面刷新時保留狀態(tài)數據的方法

    vue單頁應用在頁面刷新時保留狀態(tài)數據的方法

    今天小編就為大家分享一篇vue單頁應用在頁面刷新時保留狀態(tài)數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 說說Vuex的getters屬性的具體用法

    說說Vuex的getters屬性的具體用法

    這篇文章主要介紹了說說Vuex的getters屬性的具體用法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • vue 之 .sync 修飾符示例詳解

    vue 之 .sync 修飾符示例詳解

    這篇文章主要介紹了vue 之 .sync 修飾符的相關知識,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下
    2018-04-04
  • Vue項目打包成exe可執(zhí)行文件的實現過程(無瑕疵,完美版)

    Vue項目打包成exe可執(zhí)行文件的實現過程(無瑕疵,完美版)

    突然接到公司需求,說客戶想讓我們把項目直接打包,所以下面這篇文章主要給大家介紹了關于Vue項目打包成exe可執(zhí)行文件的實現過程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Vue?事件處理函數的綁定示例詳解

    Vue?事件處理函數的綁定示例詳解

    這篇文章主要為大家介紹了Vue?事件處理函數的綁定示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論