el-tree 前端过滤,懒加载,动态控制、默认展开,树节点排序

文章展示了如何在Vue.js应用中使用El-Tree组件实现动态展开和节点过滤功能。通过监听filterText的变化,动态调整默认展开状态,并使用filter-node-method进行自定义过滤。同时,提供了节点点击事件处理方法和递归排序子节点的逻辑。
摘要由CSDN通过智能技术生成
  1. 默认不展开,动态展开。

  1. 默认展开属性用:default-expanded-keys="array" array为默认展开节点key的数组。

<el-input placeholder="请输入搜索内容" v-model="filterText" class="inputStyle" clearable> </el-input>

<el-tree

ref="tree"

:key="treeKey"

:data="treeData"

node-key="id"

:filter-node-method="filterNode"

ref="dimTree"

:props="treeDataDefaultProp"

icon-class="el-icon-arrow-right"

@node-click="handleClick"

:load="loadNode"

lazy

:default-expand-all="isExpand"

></el-tree>

data(){

return {

filterText: '',

}

}

watch: {

// 树节点的过滤

filterText(val) {

this.keyword = val

this.getTreeData()

if (val) {

// 动态展开

this.isExpand = true;

// 重置使之重新加载

this.treeKey = +new Date();

}

// 回调更新后的数据,再渲染

this.$nextTick(() => {

this.$refs.tree.filter(val);

}

}

methods:{

filterNode(value, data) {

if (!value) return true;

const node = data.lable.toLowerCase();

return node.indexOf(value.toLowerCase()) !== -1;

},

handleClick(data, node) {

}

}

// 递归遍历排序子节点

sortTree(treeNode) {

const list = treeNode;

if (treeNode.length) {

for (const node of list) {

const nodeList = node.children || []

if (nodeList.length) {

const orderList = nodeList.sort((a, b) => {

return a.name.toLowerCase() - b.name.toLowerCase()

});

node.childern = orderList;

for (const nodeChildren of nodeList) {

const nodeChildrenList = nodeChildern.childern || [];

if (nodeChildrenList.length) {

// 参数为数组

this.sortTree([nodeChildren]);

}

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值