ex-tree
v1.0.1
Published
一个简单的用于处理树数据的插件。
Downloads
4
Readme
ex-tree
一个简单的用于处理树数据的插件。
api
constructor (options)
构造函数
| Param | Type | Default | Required | Description | | :------: | :-------------: | :------: | :------: | ------------------------------------------------------------ | | id | string | id | false | id 对应的字段名称 | | children | string |number | children | false | children 对应的字段名称 | | data | Array | - | true | 数据源 | | trim | Function | - | false | 修剪函数,从叶子节点开始,return true 删除节点,return false 保留节点 |
基础用法:
import ExTree from 'ex-tree'
const exTree = new ExTree({
data: [
{
id: 1,
name: 'data-1',
children: [
{ id: 11, name: 'data-1-1' },
{ id: 12, name: 'data-1-2' }
]
},
{ id: 2, name: 'data-2' }
]
})
指定数据的 id 与 children:
const exTree = new ExTree({
id: 'path',
children: 'child',
data: [
{
path: 1,
name: 'data-1',
child: [
{ path: 11, name: 'data-1-1' },
{ path: 12, name: 'data-1-2' }
]
},
{ path: 2, name: 'data-2' }
]
})
修剪数据:
const exTree = new ExTree({
data: [
{
id: 1,
name: 'data-1',
children: [
{ id: 11, name: 'data-1-1' },
{ id: 12, name: 'data-1-2' }
]
},
{ id: 2, name: 'data-2' }
],
trim: node => {
// 删除 id 为 2 和 11 的数据
return node.id === 2 || node.id === 11
}
})
// [{id:1,name:'data-1',children:[{id:12,name:'data-1-2'}]}]
console.log(exTree2.get())
修剪是从叶子节点开始,比如希望一个节点的子节点全部删除后,也把这个节点删除,可以这么做:
const exTree = new ExTree({
data: [
{
id: 1,
name: 'data-1',
children: [
{ id: 11, name: 'data-1-1', prune: true },
{ id: 12, name: 'data-1-2', prune: true }
]
},
{ id: 2, name: 'data-2' }
],
trim: node => {
// 先将 prune 为 true 的节点删除
if (node.prune) return true
// 再判断 children.length 是否为 0,如果是,则删除
if (node.children && node.children.length === 0) return true
return false
}
})
// [{id:2,name:'data-2'}]
console.log(exTree2.get())
getData ()
获取源数据。
getNode (id)
传入 id,获取指定 id 的节点。
getChain (id)
获取指定节点组成的链。
flat ()
将树展平。