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

如何在?Vue3?項(xiàng)目中使用?el-tree

 更新時(shí)間:2025年10月31日 16:56:39   作者:代碼工人筆記  
本文介紹在Vue3項(xiàng)目中使用el-tree的詳細(xì)代碼,本文通過實(shí)例代碼講解了常用功能與配置,感興趣的朋友跟隨小編一起看看吧

el-tree 是 Element Plus 提供的樹形控件,用于展示具有層級(jí)關(guān)系的數(shù)據(jù),如組織架構(gòu)、文件目錄、分類菜單等。

在 Vue3 項(xiàng)目中使用 el-tree

一、基礎(chǔ)用法

1. 引入組件

<template>
  <el-tree
    :data="treeData"
    :props="defaultProps"
    @node-click="handleNodeClick"
  />
</template>
<script setup>
// 樹形數(shù)據(jù)
const treeData = [
  {
    label: '一級(jí)節(jié)點(diǎn) 1',
    children: [
      {
        label: '二級(jí)節(jié)點(diǎn) 1-1',
        children: [
          { label: '三級(jí)節(jié)點(diǎn) 1-1-1' }
        ]
      }
    ]
  },
  {
    label: '一級(jí)節(jié)點(diǎn) 2'
  }
]
// 配置項(xiàng)(映射數(shù)據(jù)中的字段)
const defaultProps = {
  children: 'children', // 子節(jié)點(diǎn)字段名
  label: 'label' // 顯示文本的字段名
}
// 節(jié)點(diǎn)點(diǎn)擊事件
const handleNodeClick = (data, node, event) => {
  console.log('點(diǎn)擊節(jié)點(diǎn):', data, node, event)
}
</script>

二、常用功能與配置

1. 節(jié)點(diǎn)選擇(復(fù)選框 / 單選)

  • 復(fù)選框:添加 show-checkbox 屬性,支持多選
  • 單選:結(jié)合 check-strictly(父子不關(guān)聯(lián))和 check-on-click-node(點(diǎn)擊節(jié)點(diǎn)選中)
<el-tree
  :data="treeData"
  :props="defaultProps"
  show-checkbox  <!-- 顯示復(fù)選框 -->
  check-strictly  <!-- 父子節(jié)點(diǎn)不關(guān)聯(lián) -->
  check-on-click-node  <!-- 點(diǎn)擊節(jié)點(diǎn)即可選中 -->
  @check-change="handleCheckChange"  <!-- 選中狀態(tài)變化事件 -->
/>
<script setup>
// 選中狀態(tài)變化事件
const handleCheckChange = (data, checked, indeterminate) => {
  console.log('選中變化:', data, checked, indeterminate)
}
</script>

2. 展開 / 折疊控制

  • default-expand-all:默認(rèn)展開所有節(jié)點(diǎn)
  • expand-on-click-node:點(diǎn)擊節(jié)點(diǎn)時(shí)展開 / 折疊(默認(rèn) true
  • :default-expanded-keys:默認(rèn)展開指定節(jié)點(diǎn)(通過節(jié)點(diǎn) id 控制)
<el-tree
  :data="treeData"
  :props="defaultProps"
  :default-expanded-keys="[1, 3]"  <!-- 默認(rèn)展開 id 為 1 和 3 的節(jié)點(diǎn) -->
  :expand-on-click-node="false"  <!-- 點(diǎn)擊節(jié)點(diǎn)不展開,僅通過箭頭控制 -->
/>

3. 自定義節(jié)點(diǎn)內(nèi)容

通過 scoped-slot 自定義節(jié)點(diǎn)顯示內(nèi)容(如添加圖標(biāo)、按鈕等):

<el-tree :data="treeData" :props="defaultProps">
  <!-- 自定義節(jié)點(diǎn)內(nèi)容 -->
  <template #default="{ node, data }">
    <div class="custom-node">
      <el-icon v-if="data.children"><Folder /></el-icon>
      <el-icon v-else><Document /></el-icon>
      <span>{{ node.label }}</span>
      <el-button size="mini" @click.stop="handleEdit(data)">編輯</el-button>
    </div>
  </template>
</el-tree>
<script setup>
import { Folder, Document } from '@element-plus/icons-vue'
const handleEdit = (data) => {
  console.log('編輯節(jié)點(diǎn):', data)
}
</script>

4. 搜索過濾節(jié)點(diǎn)

結(jié)合 filter-method 實(shí)現(xiàn)節(jié)點(diǎn)搜索功能:

<template>
  <el-input
    v-model="filterText"
    placeholder="輸入關(guān)鍵詞搜索"
    style="margin-bottom: 10px"
  />
  <el-tree
    :data="treeData"
    :props="defaultProps"
    :filter-method="filterNode"
    ref="treeRef"
  />
</template>
<script setup>
import { ref, watch } from 'vue'
const filterText = ref('')
const treeRef = ref(null)
// 過濾方法
const filterNode = (value, data) => {
  if (!value) return true
  // 匹配節(jié)點(diǎn)文本(支持模糊搜索)
  return data.label.toLowerCase().includes(value.toLowerCase())
}
// 監(jiān)聽搜索文本變化,觸發(fā)過濾
watch(filterText, (val) => {
  treeRef.value.filter(val)
})
</script>

5. 獲取選中節(jié)點(diǎn)

通過組件的 getCheckedNodes 方法獲取選中的節(jié)點(diǎn)(復(fù)選框模式):

<template>
  <el-button @click="getChecked">獲取選中節(jié)點(diǎn)</el-button>
  <el-tree
    ref="treeRef"
    :data="treeData"
    :props="defaultProps"
    show-checkbox
  />
</template>
<script setup>
import { ref } from 'vue'
const treeRef = ref(null)
const getChecked = () => {
  // 獲取所有選中節(jié)點(diǎn)(參數(shù)為 true 時(shí)僅返回葉子節(jié)點(diǎn))
  const checkedNodes = treeRef.value.getCheckedNodes(false, false)
  console.log('選中節(jié)點(diǎn):', checkedNodes)
}
</script>

三、動(dòng)態(tài)加載節(jié)點(diǎn)

對于大數(shù)據(jù)場景,可通過 load 事件實(shí)現(xiàn)節(jié)點(diǎn)的懶加載(按需加載子節(jié)點(diǎn)):

<el-tree
  :data="treeData"
  :props="defaultProps"
  lazy  <!-- 啟用懶加載 -->
  :load="loadNode"  <!-- 加載子節(jié)點(diǎn)的方法 -->
  ref="treeRef"
/>
<script setup>
const loadNode = (node, resolve) => {
  // 根節(jié)點(diǎn)(level 為 0)初始加載
  if (node.level === 0) {
    return resolve([{ label: '初始節(jié)點(diǎn)', id: 1 }])
  }
  // 加載子節(jié)點(diǎn)(模擬異步請求)
  setTimeout(() => {
    const childNodes = [
      { label: `子節(jié)點(diǎn) ${node.data.id}-1`, id: `${node.data.id}-1` },
      { label: `子節(jié)點(diǎn) ${node.data.id}-2`, id: `${node.data.id}-2` }
    ]
    resolve(childNodes)
  }, 500)
}
</script>

到此這篇關(guān)于在 Vue3 項(xiàng)目中使用 el-tree的文章就介紹到這了,更多相關(guān)vue3 el-tree使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-router2.0 組件之間傳參及獲取動(dòng)態(tài)參數(shù)的方法

    vue-router2.0 組件之間傳參及獲取動(dòng)態(tài)參數(shù)的方法

    下面小編就為大家?guī)硪黄獀ue-router2.0 組件之間傳參及獲取動(dòng)態(tài)參數(shù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • vue-router 導(dǎo)航鉤子的具體使用方法

    vue-router 導(dǎo)航鉤子的具體使用方法

    本篇文章主要介紹了vue-router 導(dǎo)航鉤子的具體使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue3 diff 算法示例

    vue3 diff 算法示例

    這篇文章主要為大家介紹了vue3 diff 的算法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue在history模式下打包部署問題及解決方案

    vue在history模式下打包部署問題及解決方案

    這篇文章主要介紹了vue在history模式下打包部署問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能實(shí)例

    Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能實(shí)例

    這篇文章主要給大家介紹了關(guān)于Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能的相關(guān)資料,element-UI表格的使用相信大家都不陌生,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • Vue中組件遞歸及使用問題

    Vue中組件遞歸及使用問題

    這篇文章主要介紹了Vue中組件的遞歸和使用問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 概述VUE2.0不可忽視的很多變化

    概述VUE2.0不可忽視的很多變化

    本文給大家分析下vue2.0幾個(gè)重要的與自己目前項(xiàng)目相關(guān)的變化,也是vue2.0不可忽視的變化,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • Vue+ElementUi實(shí)現(xiàn)點(diǎn)擊表格鏈接頁面跳轉(zhuǎn)和路由效果

    Vue+ElementUi實(shí)現(xiàn)點(diǎn)擊表格鏈接頁面跳轉(zhuǎn)和路由效果

    這篇文章主要介紹了Vue+ElementUi實(shí)現(xiàn)點(diǎn)擊表格中鏈接進(jìn)行頁面跳轉(zhuǎn)和路由,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Vue前端如何實(shí)現(xiàn)生成PDF并下載功能詳解

    Vue前端如何實(shí)現(xiàn)生成PDF并下載功能詳解

    在前端的崗位上經(jīng)常需要實(shí)現(xiàn)個(gè)生成個(gè)并下載的可視化圖表頁P(yáng)DF文件,這篇文章主要給大家介紹了關(guān)于Vue前端如何實(shí)現(xiàn)生成PDF并下載功能的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 基于Vue實(shí)現(xiàn)Excel解析與導(dǎo)出功能詳解

    基于Vue實(shí)現(xiàn)Excel解析與導(dǎo)出功能詳解

    導(dǎo)入導(dǎo)出excel這是前端做管理系統(tǒng)最常用的功能了,下面這篇文章主要給大家介紹了基于Vue實(shí)現(xiàn)Excel解析與導(dǎo)出功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08

最新評(píng)論

上高县| 龙川县| 云梦县| 黄梅县| 甘泉县| 土默特左旗| 彭泽县| 日照市| 鹤壁市| 双流县| 衡阳县| 安乡县| 芜湖县| 赣州市| 舒兰市| 阿城市| 武强县| 姚安县| 驻马店市| 大悟县| 平江县| 镇赉县| 云和县| 外汇| 蒲城县| 延川县| 崇仁县| 克东县| 岗巴县| 福清市| 荥经县| 房产| 嵩明县| 黑山县| 昌乐县| 澄城县| 乌兰察布市| 霍林郭勒市| 鸡泽县| 临海市| 云阳县|