el-tree-v2渲染树形大数据并设置默认睁开

打印 上一主题 下一主题

主题 548|帖子 548|积分 1644

el-tree-v2无 el-tree中默认睁开节点的属性,需要自行设置

default-expand-all是否默认睁开所有节点
需求:首次默认睁开全部节点

实现1实验失败:增加设置了属性 :default-expand-keys="props.treeData.map(item=item.id)"无效,但是静态数据:default-expand-keys="[1]"指定id就可以睁开,缘故原由应该是数据视图更新导致,但是未找到好的解决方法。
如下实现:
1-设置了firstExpand为首次加载标记
2-判断为第一次加载,是就setExpandedKeys设置默认睁开
  1. <script lang="ts" setup>
  2.   import {  ElTree } from "element-plus";
  3.   import { ref, watch, onMounted, nextTick } from "vue";
  4. //动态设置的高度
  5.   const { tableBox, tableHeight } = useDynamicTableHeight();
  6.   const defaultProps = {
  7.     children: 'peopleData',
  8.     value: 'id'
  9.   }
  10.   // 传给父组件点击事件
  11.   const emits = defineEmits(['clickMapTerminal']);
  12.   // 点击
  13.   const onClickMapTerminal = (data) => {
  14.   
  15.   }
  16.   const props = defineProps({
  17.     treeData: {
  18.       type: Array,
  19.       default: () => {
  20.         return []
  21.       }
  22.     }
  23.   })
  24.   const treeRef = ref < InstanceType < typeof ElTree >> ();
  25.   //第一次加载标记
  26.   const firstExpand = ref < boolean > (true);
  27.   //监听第一次加载就默认展开全部节点
  28.   watch(() => props.terminalData, () => {
  29.     if (!firstExpand.value) return;
  30.     setExpandedKeys();
  31.     firstExpand.value = false;
  32.   }, { deep: true })
  33.   //默认全部展开——设置当前展开的节点
  34.   const setExpandedKeys = () => {
  35.     const allChooseIds = props.treeData.map(item => item.id) || [];
  36.     treeRef.value?.setExpandedKeys(allChooseIds);
  37.   }
  38. </script>
  39. <template>
  40.   <div id="list" class="overflow-y-auto h-full">
  41.     <el-scrollbar class="w-full flex-1 h-full border-[1px] grow border-[#F0F0F0]" ref="tableBox">
  42.       <el-tree-v2 ref="treeRef" :height="tableHeight" :data="props.treeData" :props="defaultProps" node-key="id" :expand-on-click-node="true" :item-size="45" default-expand-all @node-click="onClickMapTerminal">
  43.         <template #default="{ node, data }">
  44.         
  45.         </template>
  46.       </el-tree-v2>
  47.     </el-scrollbar>
  48.   </div>
  49. </template>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表