El-Tree节点名称过长处理

任何事物都无法抗拒吞食一切的时间。——泰戈尔

上一篇写到用el-tree实现触发部门管理的默认点击事件,但是当我们的部门名称过长时候发现展示效果不尽人意,查看文档后只能自己间接来实现了,借助el-tooltip和el-tree的自定义内容,以下是关于自定义内容的两种实现

可以通过两种方法进行树例程内容的自定义:render-content和范围槽。使用render-content指定渲染函数,该函数返回需要的例程区域内容即可。渲染函数的用法请参考Vue文档。参数node状语从句:data,分别表示当前节点的节点对象和当前节点的数据注意:由于的jsfiddle不支持JSX语法,所以render-content。示例在的jsfiddle中无法运行但是在实际的项目中,只要正确地配置了相关依赖,就可以正常运行。

这里使用范围槽处理,二者逻辑类似,语法稍不同,废话不多说,直接上代码一目了然

<div>
          <el-tree
            :data="deptTree"
            :props="defaultProps"
            :expand-on-click-node="false"
            :filter-node-method="filterNode"
            highlight-current
            node-key="id"
            ref="tree"
            default-expand-all
            @node-click="handleNodeClick">
            <span class="custom-tree-node" slot-scope="{ node, data }">
                  <el-tooltip class="item" effect="dark" :content="node.label" placement="top-start">
                    <span > {{ node.label | ellipsis(8) }} </span>
                  </el-tooltip>
              <div>
               // 这里可以接着继续写内容来渲染,比如操作按钮编辑删除等
              </div>
            </span>
          </el-tree>
        </div>

ellipsis是一个过滤器,因为考虑到简单封装下可以全局系统使用,定义在vue目录结构filters中,声明如下

/**
 * 省略多余字符,用...显示
 * @param {String} value
 * @param {number} len
 */
export function ellipsis(value, len) {
  if (!value) return ''
  if (value.length > len) {
    return value.slice(0, len) + '...'
  }
  return value
}

关于过滤器的使用详见Vue Filters

main.js中注册全局

import * as filters from "./filters";

// register global utility filters
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key]);
});

附上最终效果图


el-tree
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 深入响应式 追踪变化: 把普通js对象传给Vue实例的data选项,Vue将使用Object.defineProp...
    冥冥2017阅读 4,911评论 6 16
  • 前几天想学学Vue中怎么编写可复用的组件,提到要对Vue的render函数有所了解。可仔细一想,对于Vue的ren...
    kangaroo_v阅读 116,236评论 13 171
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,273评论 0 6
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,422评论 0 3
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 3,032评论 1 4