0.0.5 • Published 4 years ago

lt-tree v0.0.5

Weekly downloads
26
License
-
Repository
-
Last release
4 years ago

LtTree 树组件

参考uni-app插件市场中的tree树形结构插件。

安装

$ npm install lt-tree -S

使用

main.js 文件中引入插件并注册

# main.js
import LtTree from 'LtTree';
Vue.use(vcolorpicker);

基本用法:

<template>
	<lt-tree :tree-data="treeData" 
		node-key="label" 
		@node-expand="handleNodeExpand" 
		@node-click="handleNodeClick">
		</lt-tree>
</template>
export default {
	data() {
		return {
			treeData: []
		};
	},
	onLoad() {
		setTimeout(() => {
			this.treeData = [{
				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'
					}]
				}]
			}]
		}, 2000);
	},
	methods: {
		handleNodeClick(obj) {
			console.log('handleNodeClick', JSON.stringify(obj));
		},
		handleNodeExpand(obj) {
			console.log('handleNodeExpand', JSON.stringify(obj));
		}
	}
};

懒加载:

tips:为了确保页面加载完成后才去调用load方法,this指向正确,使用v-if懒加载树组件,在页面的onLoad之后调用

<template>
	<lt-tree :props="props" 
             node-key="name" 
             :load="loadNode" lazy>
	</lt-tree>
</template>
export default {
	data() {
		return {
			props: {
				label: 'name',
				children: 'zones',
				isLeaf: 'leaf'
			}
		};
	},
	methods: {
		loadNode(node, resolve) {
			if (node.level === 0) {
				setTimeout(() => {
					resolve([{
						name: 'region'
					}]);
				}, 1000);
			}else{
				if (node.level > 1) return resolve([]);
				setTimeout(() => {
					const data = [{
						name: 'leaf',
						leaf: true
					}, {
						name: 'zone'
					}];
					resolve(data);
				}, 500);
			}
		}
	}
};

属性说明:

属性名类型默认值说明
nodeKeyString-必填,每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
treeDataArray-非懒加载时的展示数据
emptyTextString暂无数据内容为空的时候展示的文本
renderAfterExpandBooleantrue是否在第一次展开某个树节点后才渲染其子节点
checkStrictlyBooleanfalse在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false,如果设置了checkOnlyLeaf为true,这里也将变为true
defaultExpandAllBooleanfalse是否默认展开所有节点
expandOnClickNodeBooleantrue是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点
checkOnClickNodeBooleanfalse是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点
autoExpandParentBooleantrue是否在第一次展开某个树节点后才渲染其子节点
defaultCheckedKeysArray-默认勾选的节点的 key 的数组
defaultExpandedKeysArray-默认展开的节点的 key 的数组
currentNodeKeyString, Number-当前选中的节点
showCheckboxBooleanfalse节点是否可被选择
showRadioBooleanfalse节点是否可被单选
checkOnlyLeafBooleanfalse是否最后一层叶子节点才显示单选/多选框
propsObject见下文数据中对应的属性名
lazyBooleanfalse是否懒加载子节点,需与 load 方法结合使用
highlightCurrentBooleanfalse是否高亮当前选中节点,默认值是 false
loadFunction-加载子树数据的方法,仅当 lazy 属性为true 时生效
filterNodeMethodFunction-对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏
childVisibleForFilterNodeBooleanfalse搜索时是否展示匹配项的所有子节点
accordionBooleanfalse是否每次只打开一个同级树节点展开
indentNumber18相邻级节点间的水平缩进,单位为像素
iconClassString-自定义树节点的展开图标,图标class
showNodeIconBooleanfalse是否显示节点图标,如果配置为true,需要配置props中对应的图标属性名称

props 属性说明:

属性名类型默认值说明
labelstring, function(data, node)-指定节点标签为节点对象的某个属性值
iconString-指定节点图标为节点对象的某个属性值
childrenstring-指定子树为节点对象的某个属性值
disabledStringboolean, function(data, node)指定节点选择框是否禁用为节点对象的某个属性值
isLeafboolean, function(data, node)true指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效

方法及事件: 参见elementUI说明:https://element.eleme.cn/#/zh-CN/component/tree

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago