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

element-plus的el-tree的雙向綁定示例代碼

 更新時(shí)間:2024年12月09日 14:24:33   作者:i_am_a_div_日積月累_  
這篇文章主要介紹了element-plus的el-tree的雙向綁定的示例代碼,代碼簡單易懂,結(jié)合圖文給大家展示,感興趣的朋友跟隨小編一起看看吧

el-tree改造了下
可選可取消 有默認(rèn)值 不包含父級(jí)id(也可打開注釋 包含父級(jí)id) 默認(rèn)展開 點(diǎn)擊節(jié)點(diǎn)也可觸發(fā)選擇 節(jié)點(diǎn)內(nèi)容自定義

<template>
  <div class="absolute">
    <el-scrollbar class="pall">
      <div class="ball mb radius overflow">
        <div class="bb" style="background: rgba(124, 162, 121, 0.1); padding: 4px 16px;">
          <el-checkbox @change="selectCheckBox($event,1)">拓?fù)鋱D樹結(jié)構(gòu)</el-checkbox>
        </div>
        <!--
      default-checked-keys:默認(rèn)展開值(正常來說需要包含父級(jí)id的 但是我們后端不要后端id )
      show-checkbox:多選框
      node-key:每個(gè)樹節(jié)點(diǎn)用來作為唯一標(biāo)識(shí)的屬性,整棵樹應(yīng)該是唯一的
      default-expand-all:是否默認(rèn)展開所有節(jié)點(diǎn)
      expand-on-click-node:是否在點(diǎn)擊節(jié)點(diǎn)的時(shí)候展開或者收縮節(jié)點(diǎn), 默認(rèn)值為 true,如果為 false,則只有點(diǎn)箭頭圖標(biāo)的時(shí)候才會(huì)展開或者收縮節(jié)點(diǎn)
      default-checked-keys:默認(rèn)勾選的節(jié)點(diǎn)的 key 的數(shù)組
      check-on-click-node:是否在點(diǎn)擊節(jié)點(diǎn)的時(shí)候選中節(jié)點(diǎn),默認(rèn)值為 false,即只有在點(diǎn)擊復(fù)選框時(shí)才會(huì)選中節(jié)點(diǎn)
      props:配置選項(xiàng),具體看下表
      -->
        {{ childKeys }}
        <div style="padding: 4px 20px">
          <el-tree :key="keyIndex" ref="treeRef" class="tree_ref" style="max-width: 600px" :data="data" show-checkbox
            node-key="id" :default-expand-all="true" :expand-on-click-node='false' :default-checked-keys="childKeys"
            :check-on-click-node="true" :props="defaultProps" @check-change="checkChange">
            <template #default="{ node, data }">
              <span class="custom-tree-node">
                <span>{{ node.label }}</span>
                <span style="color:red;margin-left: 10px">id:{{data.id }}</span>
              </span>
            </template>
          </el-tree>
        </div>
      </div>
    </el-scrollbar>
  </div>
</template>
<script setup>
import { ref } from 'vue';
let treeRef = ref(null);
let childKeys = ref([5, 10]); // 初始化選中子節(jié)點(diǎn)的 ID
const defaultProps = {
  children: 'children',
  label: 'label',
};
let keyIndex = ref(1) // 注意該key在需要全id和只需要子集id的時(shí)候用法不同
const data = [
  {
    id: 1,
    label: 'Level one 1',
    children: [
      {
        id: 4,
        label: 'Level two 1-1',
        children: [
          {
            id: 9,
            label: 'Level three 1-1-1',
          },
          {
            id: 10,
            label: 'Level three 1-1-2',
          },
        ],
      },
    ],
  },
  {
    id: 2,
    label: 'Level one 2',
    children: [
      {
        id: 5,
        label: 'Level two 2-1',
      },
      {
        id: 6,
        label: 'Level two 2-2',
      },
    ],
  },
  {
    id: 3,
    label: 'Level one 3',
    children: [
      {
        id: 7,
        label: 'Level two 3-1',
      },
      {
        id: 8,
        label: 'Level two 3-2',
      },
    ],
  },
];
const checkChange = () => {
  // 獲取所有選中的節(jié)點(diǎn)對(duì)象
  const checkedNodes = treeRef.value.getCheckedNodes();
  // // 結(jié)果1:獲取包含父節(jié)點(diǎn)的id
  // childKeys.value = treeRef.value.getCheckedKeys()
  // 結(jié)果2:提取子節(jié)點(diǎn)的 ID,不包括父節(jié)點(diǎn)
  childKeys.value = checkedNodes
    .filter(node => !node.children) // 只保留沒有子節(jié)點(diǎn)的節(jié)點(diǎn)
    .map(node => node.id); // 提取 ID
  console.log('默認(rèn)值', childKeys.value, checkedNodes); // 只包含子節(jié)點(diǎn)的 ID
  keyIndex.value++
}
// 手動(dòng)全選
const selectCheckBox = (value, num) => {
  // console.log(value, num);
  // // 結(jié)果1:獲取包含父節(jié)點(diǎn)的id
  // if (value) {
  //   childKeys.value = getAllNodeIds(data)
  //   console.log('所有層級(jí)id', getAllNodeIds(data));
  // } else {
  //   // 取消勾選所有節(jié)點(diǎn)
  //   childKeys.value = []
  //   treeRef.value.setCheckedKeys([]);
  // }
  // keyIndex.value++
  // 結(jié)果2:提取子節(jié)點(diǎn)的 ID,不包括父節(jié)點(diǎn)
  if (value) {
    // 勾選所有節(jié)點(diǎn)
    const allKeys = data.flatMap(node => getAllNodeKeys(node));
    treeRef.value.setCheckedKeys(allKeys);
  } else {
    childKeys.value = []
    // 取消勾選所有節(jié)點(diǎn)
    treeRef.value.setCheckedKeys([]);
  }
};
const getAllNodeKeys = (node) => {
  let keys = [node.id];
  if (node.children) {
    node.children.forEach(child => {
      keys = keys.concat(getAllNodeKeys(child));
    });
  }
  console.log(keys);
  return keys;
}
// 遞歸函數(shù)獲取所有節(jié)點(diǎn)的 ID
const getAllNodeIds = (nodes) => {
  let ids = [];
  nodes.forEach(node => {
    ids.push(node.id); // 添加當(dāng)前節(jié)點(diǎn)的 ID
    if (node.children) {
      ids = ids.concat(getAllNodeIds(node.children)); // 遞歸調(diào)用以獲取子節(jié)點(diǎn)的 ID
    }
  });
  return ids;
};
</script>
<style lang="scss" scoped>
:deep(.tree_ref) {
  margin-left: 12px;
  .el-tree-node__expand-icon {
    display: none;
  }
}
</style>

到此這篇關(guān)于element-plus的el-tree的雙向綁定的文章就介紹到這了,更多相關(guān)element-plus el-tree雙向綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue表單驗(yàn)證插件Vue Validator使用方法詳解

    Vue表單驗(yàn)證插件Vue Validator使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue表單驗(yàn)證插件Vue Validator使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 如何構(gòu)建 vue-ssr 項(xiàng)目的方法步驟

    如何構(gòu)建 vue-ssr 項(xiàng)目的方法步驟

    這篇文章主要介紹了如何構(gòu)建 vue-ssr 項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 使用vue-infinite-scroll實(shí)現(xiàn)無限滾動(dòng)效果

    使用vue-infinite-scroll實(shí)現(xiàn)無限滾動(dòng)效果

    vue-infinite-scroll插件可以無限滾動(dòng)實(shí)現(xiàn)加載更多,其作用是是當(dāng)滾動(dòng)條滾動(dòng)到距離底部的指定高度時(shí)觸發(fā)某個(gè)方法。這篇文章主要介紹了用vue-infinite-scroll實(shí)現(xiàn)無限滾動(dòng)效果,需要的朋友可以參考下
    2018-06-06
  • 結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    下面小編就為大家?guī)硪黄Y(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • 10個(gè)Vue3中的編程實(shí)用技巧分享

    10個(gè)Vue3中的編程實(shí)用技巧分享

    這篇文章主要為大家詳細(xì)介紹了10個(gè)Vue3中的編程實(shí)用技巧,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 詳解用vue2.x版本+adminLTE開源框架搭建后臺(tái)應(yīng)用模版

    詳解用vue2.x版本+adminLTE開源框架搭建后臺(tái)應(yīng)用模版

    這篇文章主要介紹了用vue2.x版本+adminLTE開源框架 搭建后臺(tái)應(yīng)用模版,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Vue v-text指令簡單使用方法示例

    Vue v-text指令簡單使用方法示例

    這篇文章主要介紹了Vue v-text指令簡單使用方法,結(jié)合實(shí)例形式分析了v-text指令文本輸出顯示簡單操作技巧,需要的朋友可以參考下
    2019-09-09
  • Vue開發(fā)中Jwt的使用詳解

    Vue開發(fā)中Jwt的使用詳解

    Vue中使用JWT進(jìn)行身份認(rèn)證也是一種常見的方式,它能夠更好地保護(hù)用戶的信息,本文主要介紹了Vue開發(fā)中Jwt的使用詳解,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 詳解關(guān)于Vue2.0路由開啟keep-alive時(shí)需要注意的地方

    詳解關(guān)于Vue2.0路由開啟keep-alive時(shí)需要注意的地方

    這篇文章主要介紹了關(guān)于Vue2.0路由開啟keep-alive時(shí)需要注意的地方,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue開發(fā)中的base和publicPath的區(qū)別

    vue開發(fā)中的base和publicPath的區(qū)別

    本文主要介紹了vue開發(fā)中的base和publicPath的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

临江市| 灵石县| 铜川市| 浙江省| 信宜市| 信丰县| 根河市| 水富县| 河北省| 思南县| 读书| 阳江市| 东乡县| 江山市| 海口市| 寿阳县| 车险| 崇信县| 泰宁县| 教育| 孟村| 兰溪市| 渑池县| 淄博市| 临海市| 木兰县| 扶余县| 清新县| 和硕县| 新乡县| 琼结县| 丰台区| 富民县| 屯留县| 宜兴市| 尼木县| 舟山市| 祁东县| 聂拉木县| 蓬安县| 修武县|