最近有个需求是需要获取过滤后的 Tree组件数据, 看了一下element的文档,发现没有这个api,然后看了一下tree组件的数据,也没找到过滤后的数据,最后发现,element是通过Nodetree控制一个visible的变量来控制节点显示不显示的,如图
得到这个参数也算不错了,接下来就只需要写个递归遍历出来就行
/**
* @description: 获取过滤后的数据
*/
getFilterData() {
if (this.filterText) {
const rootData = this.$refs.tree.root
if (rootData.visible) {
const childNodesStr = CircularJSON.stringify(rootData.childNodes)
const childNodes = CircularJSON.parse(childNodesStr)
this.filterData = this.recursionNodes(childNodes)
console.log(this.filterData)
} else {
console.log('暂无数据')
}
}
},
/**
* @description: 递归遍历数据
* @param {array} nodes
*/
recursionNodes(childNodes) {
const nodes = childNodes
const result = []
for (const item of nodes) {
if (item.visible) {
result.push(item.data)
}
if (item.childNodes && item.childNodes