【ElementUI -- 优化小技巧系列】 -- el-tree 节点内容过长优化 以及选中默认节点

在使用elementui过程中经常碰到关于样式的问题,我曾经很喜欢通过类名修改css样式来做,其实原生封装的elementui库的样式对于普通开发来说已经足够了,通过类名修改css只会让组件臃肿难以维护,现在真的越来越怕写css,经常出现各种难以预料的问题,所以这个系列我将分享我开发过程中遇到的样式优化问题

本期主角 El-Tree

优化内容:节点内容过长(顺带提一嘴如何默认选中节点)

在这里插入图片描述
如果节点文字内容过长就会出现这样的情况,节点内容显示不全,而且还很难看,原来我都是通过 .el-tree 的类 通过css 进行操作,比如节点过长展示省略号等等,先不说这样改完效果如何,就单从找 el 的类名就很麻烦,打开控制器,选中节点,写css样式这一系列操作,想想就让人难受

这次我直接通过js来调整,用魔法打败魔法

直接上代码

//template
<el-tree
    class="mt-2"
    ref="deptTreeRef"
    :data="instanceGroupTreeOptions"
    :props="{ label: 'label', children: 'children' }"
    :expand-on-click-node="false"
    :filter-node-method="filterNode"
    highlight-current
    default-expand-all
    @node-click="handleNodeClick"
  >
    <template #default="{node, data}">
      <div>
        <el-tooltip :show-after="300" :content="data.label" placement="top-start">
          <span> {{ellipsis(data.label, 50)}} </span>
        </el-tooltip>
      </div>
    </template>
</el-tree>

//js
const ellipsis = computed(() => {
  return function (label: string, length: number) {
    if (!label) return '';
    if (label.length > length) {
      return label.slice(0, length) + '...';
    }
    return label;
  };
});

将节点内容自定义,通过computed的方式,将节点内容控制在你想要的长度, ellipsis 方法就是截取字符串的,第一个参数就是你传递的节点内容,第二个参数就是你希望节点显示内容的长度(顺便提一嘴,computed也是可以传值的,通过闭包的方式,就可以拿到值)然后通过 el-tooltip 包裹节点内容,实现鼠标悬浮展示节点内容,这样页面就可以很美观了
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9d76d1332f7c467aa1ccb9e449e5cc2c.png

如何选中默认节点

代码如下

<el-tree
     class="mt-2"
     ref="deptTreeRef"
     node-key="id" /** 看这里 */
     :current-node-key="currentNodeId" /** 看这里 */
     :data="instanceGroupTreeOptions"
     :props="{ label: 'label', children: 'children' }"
     :expand-on-click-node="false"
     :filter-node-method="filterNode"
     highlight-current
     default-expand-all
     @node-click="handleNodeClick"
   >
     <template #default="{node, data}">
       <div>
         <el-tooltip :show-after="300" :content="data.label" placement="top-start">
           <span> {{ellipsis(data.label, 12)}} </span>
         </el-tooltip>
       </div>
     </template>
 </el-tree>

el-tree 有两个属性新增上去就行 分别是 node-keycurrent-node-key 然后比如在页面初始化时

const currentNodeId = ref('');
const getInstanceGroupTree = async () => {
  const res = await treeInstanceGroup(null);
  instanceGroupTreeOptions.value = res.data;
  currentNodeId.value = res.data[0].id;
  deptTreeRef.value?.setCurrentKey(currentNodeId.value);
};

通过 ref 操作el-tree 其中的一个 setCurrentKey 方法 传入 你想被点击的节点的id

ok!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/610256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

镜舟科技亮相2024中国移动算力网络大会、Qcon、DTC等多项活动

在刚刚过去的 4 月份&#xff0c;镜舟科技受邀参与一系列技术交流活动&#xff0c;与移动云、金科创新社、infoQ、墨天轮、开科唯识等媒体及合作伙伴展开积极交流&#xff0c;并分享其在数据技术、金融等垂直行业领域的创新实践&#xff0c;从产业侧、业务侧、技术侧洞察需求、…

基于springboot+mybatis+vue的项目实战之页面参数传递

如图所示&#xff0c;删除操作可以用按钮实现&#xff0c;也可以用超链接来实现。 1、第一种情况&#xff0c;用按钮实现。 html页面相关&#xff1a; <button type"button" click"deleteId(peot.id)">删除</button> <script>new Vue(…

Redis 支持的 Java 客户端都有哪些?

Redis 是一种高性能的键值存储系统&#xff0c;它以其快速、灵活和可扩展的特性而闻名。在 Java 开发中&#xff0c;与 Redis 交互的方式通常是通过使用 Redis 的 Java 客户端。 这些客户端提供了访问 Redis 数据库的接口&#xff0c;使开发人员能够在 Java 应用程序中轻松地使…

活动报名 | 某头部股份制银行,构建实时指标平台的最佳实践

&#x1f449;欢迎到镜舟科技公众号报名了解研讨会 数字化转型不仅是一场技术革命&#xff0c;更是企业决策模式的革新。在这一过程中&#xff0c;数据成为企业最宝贵的资产&#xff0c;实时数据分析对企业决策至关重要。 随着业务复杂性增加&#xff0c;各业务部门数据指标越…

【概率论基础】 一篇文章缕清概率论常见概念关系

碎碎念&#xff1a;再写CSDN之前有一小段时间写数模公众号的经历&#xff0c;但是公众号看的人实在太少了&#xff0c;而且排版和公式、代码编辑都没有CSDN这么方便&#xff0c;所以坚持一算时间就没有更新了。公众号大多写的是概念性的基础&#xff0c;稍加修改搬到咱们的主战…

人人都是开发者?Baidu Comate智能代码助手改变你传统的编程之路

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引入一、人人都是开发者二、Baidu Comate 智能编码助手2.1 Baidu Comate 是什么&#xff1f;2.2 Baidu Comate 支持那…

5到15秒片头音乐200款,30秒片头音效音乐大全

一、素材描述 本套音乐音效素材&#xff0c;大小2.88G&#xff0c;13个压缩文件。 二、素材目录 200个5到15秒的片头音乐.zip 30秒片头-1.zip 30秒片头-2.zip 30秒片头-3.zip 30秒片头-4.zip 30秒片头-5.zip 30秒片头-6.zip 30秒片头-7.zip 30秒片头-8.zip 30秒片头…

海睿思受邀参加 “走进中节能”研习交流,探索新能源数据治理的创新路径

近日&#xff0c;OceanMind海睿思参加由江苏省企业信息化协会&#xff08;以下简称“苏信会”&#xff09;主办的“走进中节能太阳能科技&#xff08;镇江&#xff09;有限公司”研习交流活动。 海睿思与苏美达、远东控股、隆基乐叶、固德威、上能电气等40多位来自制造业领域的…

Unity使用ToggleGroup对多个Toggle进行管理时,初始化默认选项失效的问题

问题描述&#xff1a; 在unity脚本的OnEnable中用代码设置Toggle集合中的其中一个对象的ison时&#xff0c;发现并没有根据设置发生变化。但是该Toggle的OnValueChange却发生过变化。 如果使用协程等待0.01s,那么对应组件的ison的修改才能生效&#xff0c;但是逐帧分析的话会发…

读写备份寄存器BKP与实时时钟RTC

文章目录 读写备份寄存器接线图代码 RTC实时时钟接线图代码 读写备份寄存器 接线图 即接个3.3v的电源到VBT引脚 代码 代码效果&#xff1a;第一次写入备份寄存器&#xff0c;下载程序后再注释掉&#xff0c;再进行下载&#xff0c;之前写入的数据还会保存在备份寄存器中&am…

JavaEE之线程(3)_线程的开始、中断、等待、休眠线程、线程的状态

前言 在本栏的上一节&#xff08;https://blog.csdn.net/2301_80653026/article/details/138500558&#xff09;&#xff0c;我们重点讲解了五种不同的创建线程的方式&#xff0c;我们还介绍了Tread类的常见构造方法和常见属性&#xff0c;在这一节中我们将会继续介绍Tread类。…

【SVN-TortoiseSVN】SVN 的简介与TortoiseSVN 安装使用教程

目录 &#x1f31e;前言 &#x1f30a;1. SVN 的简介 &#x1f30d;1.1 SVN是什么 &#x1f30d;1.2 SVN 工作原理 &#x1f30d;1.3 TortoiseSVN 术语及定义 &#x1f30a;2. TortoiseSVN 安装与汉化 &#x1f30a;3. SVN 基本操作-TortoiseSVN &#x1f30d;3.1 浏览…

在k8s中部署Prometheus并实现对k8s集群的监控

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Prometheus&#xff1a;监控的神》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、k8s简介 2、 Prometheus概述 二、准备k8s环境 1、…

C语言:__attribute__((packed))

一、简介 在使用结构体的时候&#xff0c;经常要根据结构体的长度来进行相关判断。但是按照C语言的规则&#xff0c;会对不同类型的数据类型进行自动对齐。有时候就会造成一些问题&#xff0c;如果不需要使用自动对齐的功能&#xff0c;就需要使用到本章的关键字。 二、自动对…

fabric搭建生产网络

fabric搭建生产网络 一、生成组织结构与身份证书 解包 hyperledger-fabric-linux-amd64-2.5.0.tar.gz 1.1、crypto-config.yaml配置文件 ./bin/cryptogen showtemplate > crypto-config.yaml 将crypto-config.yaml内容修改为&#xff1a; # -------------------------…

Django 管理员登录安全 OTP双因素认证

目前安全双因素 最基本的&#xff0c;django管理员 默认直接登录的。 本项目环境:Django 2.0.13django-otp 0.9.3 1 安装pip3 install django-otp0.9.3 2 配置文件 vim api_statistics/settings.py INSTALLED_APPS里增加django_otp,django_otp.plugins.otp_totp,MIDDLEWARE…

推荐几款国内的AI写作工具,好用免费还能在线生成AI文案

AI写作简介&#xff1a; 在专业领域中&#xff0c;人工智能技术的进步正以前所未有的速度推动着写作行业的革新。当前&#xff0c;我们见证了生成式人工智能&#xff08;AI&#xff09;在文本产生领域的广泛应用&#xff0c;其对提升创作效率和拓展创意边界的贡献是显著的。以…

用 Next.js 和 Supabase 进行“全栈”开发的入门

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;创建Next.js应用程序&#xff08;1.1&#xff09;新建工程目录&#xff08;1.2&#xff09;安装依赖环境&#xff08;1.3&#xff09;创建Tailwind配置 &#xff08;二&#xff09;创建Supabase项目&#xf…

Leetcode—232. 用栈实现队列【简单】

2024每日刷题&#xff08;131&#xff09; Leetcode—232. 用栈实现队列 实现代码 class MyQueue { public:MyQueue() {}void push(int x) {st.push(x);}int pop() {if(show.empty()) {if(empty()) {return -1;} else {int ans show.top();show.pop();return ans;}} else {i…

管道液位传感器怎么接线

管道光电液位传感器是用来检测水管缺水的一种液位传感器&#xff0c;有水无水输出不同电压信号&#xff0c;在洗地机领域有着广泛的应用&#xff0c;那么管道液位传感器怎么接线&#xff1f; 管道液位传感器通常有三根线&#xff0c;电源线、地线和信号线&#xff0c;电源线接…
最新文章