Element-UI定制化Tree 树形控件

1.复制

说明:复制Tree树形控件。

javascript 复制代码
<script>
export default {
  data() {
    return {
      data: [{
        label: '一级 1',
        children: [{
          label: '二级 1-1',
          children: [{
            label: '三级 1-1-1'
          }]
        }]
      }, {
        label: '一级 2',
        children: [{
          label: '二级 2-1',
          children: [{
            label: '三级 2-1-1'
          }]
        }, {
          label: '二级 2-2',
          children: [{
            label: '三级 2-2-1'
          }]
        }]
      }, {
        label: '一级 3',
        children: [{
          label: '二级 3-1',
          children: [{
            label: '三级 3-1-1'
          }]
        }, {
          label: '二级 3-2',
          children: [{
            label: '三级 3-2-1'
          }]
        }]
      }],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    };
  },
  methods: {
    handleNodeClick(data) {
      console.log(data);
    }
  }
};
</script>
<template>
<div>
  <h1>我是树形控件</h1>
  <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</div>
</template>

<style scoped>

</style>

2.显示

3.图标

3.1新增图标

说明:每一个label前面都有一个定制图标

javascript 复制代码
<template>
<div>
  <h1>我是树形控件</h1>
  <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick">
      <span slot-scope="{ node, data }" style="align-items: center">
        <i class="icon-book">
          <img style="width: 20px;" src="../../gis/images/bookmark-one.png">
        </i>
        <span>{{node.label}}</span>
      </span>
  </el-tree>
</div>
</template>

或者

javascript 复制代码
<template>
<div>
  <h1>我是树形控件</h1>
  <el-tree class="custom-el-tree" :data="data" :props="defaultProps" @node-click="handleNodeClick">
    <template v-slot="{ node, data }">
    <span style="align-items: center">
      <i>
        <img style="width: 20px;" src="../../gis/images/bookmark-one.png">
      </i>
      <span>{{ node.label }}</span>
    </span>
    </template>
  </el-tree>
</div>
</template>

3.2修改默认图标

说明: 将默认箭头形式变成加号形式。

css 复制代码
<style scoped>
/* 加号*/
/deep/ .custom-el-tree .el-icon-caret-right:before {
  content: "\e6d9";
  font-size: 18px;
}

</style>

4.源码

javascript 复制代码
<script>
export default {
  data() {
    return {
      data: [{
        label: '一级 1',
        children: [{
          label: '二级 1-1',
          children: [{
            label: '三级 1-1-1'
          }]
        }]
      }, {
        label: '一级 2',
        children: [{
          label: '二级 2-1',
          children: [{
            label: '三级 2-1-1'
          }]
        }, {
          label: '二级 2-2',
          children: [{
            label: '三级 2-2-1'
          }]
        }]
      }, {
        label: '一级 3',
        children: [{
          label: '二级 3-1',
          children: [{
            label: '三级 3-1-1'
          }]
        }, {
          label: '二级 3-2',
          children: [{
            label: '三级 3-2-1'
          }]
        }]
      }],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    };
  },
  methods: {
    handleNodeClick(data) {
      console.log(data);
    }
  }
};
</script>
<template>
<div>
  <h1>我是树形控件</h1>
  <el-tree class="custom-el-tree" :data="data" :props="defaultProps" @node-click="handleNodeClick">
    <template v-slot="{ node, data }">
    <span style="align-items: center">
      <i>
        <img style="width: 20px;" src="../../gis/images/bookmark-one.png">
      </i>
      <span>{{ node.label }}</span>
    </span>
    </template>
  </el-tree>
</div>
</template>

<style scoped>
/* 加号*/
/deep/ .custom-el-tree .el-icon-caret-right:before {
  content: "\e6d9";
  font-size: 18px;
}

</style>
相关推荐
柒和远方4 分钟前
Phase 7.3 复盘:后台任务不只是“扔进队列”,还要能被看见
前端·后端·架构
2501_943782358 分钟前
【共创季稿事节】 倒计时器:时分秒选择器与定时器的协同工作
前端·华为·harmonyos·鸿蒙·鸿蒙系统
奶油mm16 分钟前
公司技术债堆积如山,我一人之力用 Vue3 偷换了整个前端架构
前端·vue.js
用户9385156350716 分钟前
深入理解 JavaScript 中的 this 与数据存储的奥秘
前端·javascript
JNX_SEMI1 小时前
AT2659 L1频段多模卫星导航低噪声放大器技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
Profile排查笔记3 小时前
指纹浏览器环境异常排查:Fingerprint、Profile、Proxy、Session 和 Task Log 怎么看
前端·人工智能·后端·自动化
京韵养生记3 小时前
【无标题】
java·服务器·前端
格子软件3 小时前
2026年分布式GEO代理流量调度:源码级状态机防重挂实战
java·vue.js·人工智能·spring boot·分布式·vue
大气的小蜜蜂3 小时前
领域层的服务
java·前端·数据库
星栈3 小时前
LiveView 的 LiveComponent:比 React 组件更轻,但我一开始真的把它用错了
前端·前端框架·elixir