封装组件代码

// 组件:树
/*
参数说明-属性:
1.treeData:展示数据(array)
2.treeEmptyText:内容为空的时候展示的文本(String)
3.treeNodeKey:每个树节点用来作为唯一标识的属性,整棵树应该是唯一的(String)
4.treeRenderAfterExpand:是否在第一次展开某个树节点后才渲染其子节点(boolean)
5.treeHighlightCurrent:是否高亮当前选中节点,默认值是 false(boolean)
6.treeDefaultExpandAll:是否默认展开所有节点(boolean)
7.treeExpandOnClickNode:是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点(boolean)
8.treeCheckOnClickNode:是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。(boolean)
9.treeDefaultExpandedKeys:默认展开的节点的 key 的数组(array)
10.treeShowCheckbox:节点是否可被选择(boolean)
11.treeCheckStrictly:在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false(boolean)
12.treeDefaultCheckedKeys:默认勾选的节点的 key 的数组(array)
13.treeAccordion:是否每次只打开一个同级树节点展开(boolean)
14.treeIndent:相邻级节点间的水平缩进,单位为像素(number)
15.treeIconClass:自定义树节点的图标(string)
16.treeFilterText:对树节点进行筛选操作(string) 17.treeNodeClickFunName:节点点击回调函数的函数名(示例:@trNodeClick="treeNodeClick" treeNodeClickFunName="trNodeClick")
返回参数:s:有复选框时,选中节点的信息,
a:点击节点在data中对应的对象,
b:节点对应的 Node
18.treeCheckChangeFunName:节点选中状态发生变化时的回调函数的函数名(示例:@trCheckChange="treeCheckChange" treeCheckChangeFunName="trCheckChange")
返回参数:a:传递给 data 属性的数组中该节点所对应的对象,
b:节点本身是否被选中,
c:节点的子树中是否有被选中的节点
说明:现在返回参数报错(TypeError: Cannot read property 'toLowerCase' of undefined)不知道啥原因,暂时不返回
19.treeCheckFunName:当复选框被点击的时候触发回调函数的函数名(示例:@trCheck="treeCheck" treeCheckFunName="trCheck")
返回参数:a:传递给 data 属性的数组中该节点所对应的对象
b:树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性 参数说明-事件:
1.node-click:节点被点击时的回调(共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。)
2.check-change:节点选中状态发生变化时的回调(共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点)
3.check:当复选框被点击的时候触发(共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性)
*/
<template>
<div>
<el-tree :data="treeData" :empty-text="treeEmptyText" :node-key="treeNodeKey" :render-after-expand="treeRenderAfterExpand" :highlight-current="treeHighlightCurrent" :default-expand-all="treeDefaultExpandAll" :expand-on-click-node="treeExpandOnClickNode" :check-on-click-node="treeCheckOnClickNode" :default-expanded-keys="treeDefaultExpandedKeys" :show-checkbox="treeShowCheckbox" :check-strictly="treeCheckStrictly" :default-checked-keys="treeDefaultCheckedKeys" :accordion="treeAccordion" :indent="treeIndent" :icon-class="treeIconClass" :filter-node-method="filterNode" @node-click="nodeClick" @check-change="checkChange" @check="check" :props="defaultProps" ref="modelTree">
</el-tree>
</div>
</template> <script>
export default {
props: {
treeData: {
type: Array
},
treeEmptyText: {
type: String,
default: '暂无数据'
},
treeNodeKey: {
type: String
},
treeRenderAfterExpand: {
type: Boolean,
default: true
},
treeHighlightCurrent: {
type: Boolean,
default: false
},
treeDefaultExpandAll: {
type: Boolean,
default: false
},
treeExpandOnClickNode: {
type: Boolean,
default: true
},
treeCheckOnClickNode: {
type: Boolean,
default: false
},
treeDefaultExpandedKeys: {
type: Array
},
treeShowCheckbox: {
type: Boolean,
default: false
},
treeCheckStrictly: {
type: Boolean,
default: false
},
treeDefaultCheckedKeys: {
type: Array
},
treeAccordion: {
type: Boolean,
default: false
},
treeIndent: {
type: Number,
default: 16
},
treeIconClass: {
type: String
},
treeFilterText: {
type: String
},
treeNodeClickFunName: {
type: String
},
treeCheckChangeFunName: {
type: String
},
treeCheckFunName: {
type: String
}
},
data () {
return {
defaultProps: {
children: 'children',
label: 'label'
}
}
},
methods: {
filterNode (value, data) {
if (!value) return true
return data.label.indexOf(value) !== -1
},
nodeClick (a, b, c) {
if (!this.treeNodeClickFunName || this.treeNodeClickFunName === '') return
let s = this.$refs.modelTree.getCheckedNodes()
this.$emit(this.treeNodeClickFunName, s, a, b)
},
checkChange (a, b, c) {
if (!this.treeCheckChangeFunName || this.treeCheckChangeFunName === '') return
this.$emit(this.treeCheckChangeFunName, a, b, c)
},
check (a, b) {
if (!this.treeCheckFunName || this.treeCheckFunName === '') return
this.$emit(this.treeCheckFunName, a, b)
}
},
computed: {}, mounted: function () { }, watch: {
treeFilterText (val) {
this.$refs.modelTree.filter(val)
}
}
}
</script> <style></style>

  父组件调用方式:

 <componentsTree
:treeData="treeData"
:treeEmptyText="treeEmptyText"
:treeNodeKey="treeNodeKey"
:treeRenderAfterExpand="treeRenderAfterExpand"
:treeHighlightCurrent="treeHighlightCurrent"
:treeDefaultExpandAll="treeDefaultExpandAll"
:treeExpandOnClickNode="treeExpandOnClickNode"
:treeCheckOnClickNodes="treeCheckOnClickNodes"
:treeDefaultExpandedKeys="treeDefaultExpandedKeys"
:treeShowCheckbox="treeShowCheckbox"
:treeCheckStrictly="treeCheckStrictly"
:treeDefaultCheckedKeys="treeDefaultCheckedKeys"
:treeAccordion="treeAccordion"
:treeIndent="treeIndent"
:treeIconClass="treeIconClass"
:treeFilterText="filterText"
@trNodeClick="treeNodeClick" treeNodeClickFunName="trNodeClick"
@trCheckChange="treeCheckChange" treeCheckChangeFunName="trCheckChange"
@trCheck="treeCheck" treeCheckFunName="trCheck">
</componentsTree>

  引入方式:

import componentsTree from '@/utils/Tree/Tree'

components: {
componentsTree
} data () {
return {
treeData: [
{
id: 1,
label: '名士豪庭',
children: [
{
id: 4,
label: '1号楼',
children: [
{
id: 9,
label: '名士豪庭-李四',
type: 'person'
},
{
id: 10,
label: '名士豪庭-王五',
type: 'person'
}
]
},
{
id: '1_4',
label: '2号楼',
children: [
{
id: '1_4_9',
label: '名士豪庭-大胖胖',
type: 'person'
},
{
id: '1_4_10',
label: '名士豪庭-栗瀚昂',
type: 'person'
}
]
}
]
},
{
id: 2,
label: '金石晶城',
children: [
{
id: 5,
label: '3号楼',
children: [
{
id: '2_5_9',
label: '金石晶城-卞雨梅',
type: 'person'
},
{
id: '2_5_10',
label: '金石晶城-益振华',
type: 'person'
}
]
},
{
id: 6,
label: '5号楼'
}
]
},
{
id: 3,
label: '黄金国际',
children: [
{
id: 7,
label: '2号楼'
},
{
id: 8,
label: '5号楼',
children: [
{
id: '3_8_9',
label: '黄金国际-阮嘉志',
type: 'person'
},
{
id: '3_8_10',
label: '黄金国际-谷梁静曼',
type: 'person'
}
]
}
]
}
],
treeEmptyText: '暂无数据1',
treeNodeKey: 'id',
treeRenderAfterExpand: true,
treeHighlightCurrent: true,
treeDefaultExpandAll: true,
treeExpandOnClickNode: false,
treeCheckOnClickNodes: false,
treeDefaultExpandedKeys: [1, 3],
treeShowCheckbox: true,
treeCheckStrictly: false,
treeDefaultCheckedKeys: [],
treeAccordion: true,
treeIndent: 9,
treeIconClass: ''
}
}

  展示效果:

vue,基于element的tree组件封装的更多相关文章

  1. vue 基于elment UI tree 组件实现带引导、提示线

    实现样式 准备工作,先实现 树状组件的基本样式 <span style="height:500px; display:block; overflow-y:auto;" cla ...

  2. vue+element ui table组件封装,使用render渲染

    后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...

  3. vue基于 element ui 的按钮点击节流

    vue的按钮点击节流 场景: 1.在实际使用中,当我们填写表单,点击按钮提交的时候,当接口没返回之前,迅速的点击几次,就会造成多次提交. 2.获取验证码,不频繁的获取. 3.弹幕不能频繁的发 基于这几 ...

  4. vue引入百度地图api组件封装(根据地址定位)

    Map.vue <template> <div class="Map" :style="{ height: this.height+'px', widt ...

  5. element之tree组件样式重写

    1.改写实现效果: 2.页面代码 <el-tree :data="data" :props="defaultProps" @node-click=&quo ...

  6. Element中Tree树结构组件中实现Ctrl和Shift多选

    在Element中的树结构中, 实现多选功能,首先的是判断有没有按下键盘ctrl和shift按键.但是在Element中的tree组件的左键点击事件是没有提供$event鼠标属性判断的.所以就需要在函 ...

  7. elementUI下拉树组件封装

    使用组件:Popover 弹出框.Tree 树形控件 和 input 输入框 用法: 1.新建一个.vue文件,粘贴以下组件封装的代码(完全可以使用) 2.在页面需要使用下拉树的地方调用即可. (1) ...

  8. 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

    VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...

  9. 手把手教学~基于element封装tree树状下拉框

    在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...

随机推荐

  1. 扩展Puppet – 建立Puppet CA集群

    扩展Puppet – 建立Puppet CA集群  (1 votes, average: 5.00 out of 5) 588 views 2012 年 3 月 4 日Puppet.运维ca.mast ...

  2. LINUX装机问题:无法使用“Ctrl+Alt+[F1~F6]”快捷键切换到终端

    用VMware装LINUX虚拟机之后,你会发现在X Window的登陆界面无法使用“Ctrl+Alt+[F1~F6]”快捷键切换到终端,这是因为VMware默认的快捷键也是Ctrl+Alt,所以你只需 ...

  3. 1,Java消息服务-JMS

    一,消息服务 消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持应用程序开发.在Java中,当两个应用程序使用JMS ...

  4. C语言 - strlen的编程实现及总结

    一.函数strlen的编程实现 1.strlen函数的实现 原型: size_t strlen(const char *str); 头文件:#include <string.h> 功能:计 ...

  5. UVa 1595 Symmetry (set && math)

    题意:给出n个在直角坐标系上的点,问你能不能找出一条竖轴(即垂直于x的轴)使得所有的点根据这条轴对称,能则输出YES,否则输出NO 分析:首先需要找到对称轴的值,将所有n个点的x轴的值加起来然后去除以 ...

  6. cogs1682. [HAOI2014]贴海报 x

    1682. [HAOI2014]贴海报 ★★☆   输入文件:ha14d.in   输出文件:ha14d.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] Bytetow ...

  7. 八、定制new和delete

    条款49:了解new-handler的行为 new异常会发生什么事? 在旧式的编译器中,operator new分配内存失败的时候,会返回一个null指针.而现在则是会抛出一个异常. 而在抛出这个异常 ...

  8. 微信小程序_(视图)简单的scroll-view容器

    scroll-view容器效果 官方文档:传送门 scroll-view 可滚动视图区域 scroll-x Boolean false 允许横向滚动 scroll-y Boolean false 允许 ...

  9. mysql 日期辅助表

    MySQL 生成日期表 #.创建一个num表,用来存储数字0 CREATE TABLE num (i int); #.在num表中生成0 ), (), (), (), (), (), (), (), ...

  10. JavaScript 普通声明式函数

    1.为什么需要函数 实现代码的复用.存在函数提升,且会在变量提升的上面; 2.函数的创建 js中函数语法: function 函数名(形参){ //函数体 } 调用时:函数名(形参) 注: (1) 形 ...