前言
ElementUI中el-tree
树形控件,并没有直接提供一个给叶子节点添加点击事件的属性。
这点不同于Vue-Treeselect
,添加:disable-branch-nodes="true"
即可实现只允许选中(末)叶子节点。
实现效果
通过改造,可以使用el–tree实现以下图片,左侧班级列表效果。点击父节点(专业、学院、学校节点)不触发axios请求或其他操作只展开收起节点,而当点击班级节点才会发送请求,更新右侧用户列表。
伪代码
思路:给所有节点添加点击事件,且默认设置点击父节点(非叶子节点)为展开或者收缩(给用户良好体验),判断当前点击是否为叶子节点,如果是则触发点击事件,不是则默认实现原有的展开收缩效果。
<el-tree
// 绑定的班级列表 classOptions结构参照完整代码中的结构
:data="classOptions"
// 关键:点击节点是是否展开或收缩
:expand-on-click-node="true"
// 打标记
ref="tree"
// 设置唯一标识属性
node-key="id"
// 默认展开全部
default-expand-all
// 高亮选中的节点
highlight-current
// 关键:节点点击事件
@node-click="handleNodeClick" />
// 节点单击事件 data为选中节点数据 data{id:1,label:'计算机2020-1班',children:null} 非叶子节点则 children为数组
handleNodeClick(data) {
// data.children == null则为叶子节点
if (data.children == null) {
// 将id赋值给查询对象的classId
this.queryParams.classId = data.id;
// 查询请求
this.handleQuery();
} else {
return
}
/** axios请求 */
handleQuery() {
// 略...
this.getList(this.queryParams);
},
完整代码
this.$refs.tree.setCurrentKey(null);
可以清空tree选中节点,当需要重置操作时,记得使用这行命令
<template>
<el-tree :data="classOptions" :expand-on-click-node="true" ref="tree" node-key="id" default-expand-all highlight-current
@node-click="handleNodeClick" />
</template>
<script>
export default {
data() {
return {
classOptions: [
{
"id": 100,
"label": "xxx大学",
"children": [
{
"id": 101,
"label": "计算机学院",
"children": [
{
"id": 200,
"label": "计算机科学与技术",
"children": [
{
"id": 201,
"label": "计科2020-1班"
},
{
"id": 202,
"label": "计科2020-3班"
}
]
},
{
"id": 103,
"label": "软件工程",
"children": [
{
"id": 203,
"label": "软工2020-1班"
},
{
"id": 204,
"label": "软工2020-2班"
}
]
},
{
"id": 104,
"label": "网络工程",
"children": [
{
"id": 206,
"label": "网工2020-1班"
}
]
}
]
},
{
"id": 102,
"label": "建筑学院",
"children": [
{
"id": 108,
"label": "土木建筑",
"children": [
{
"id": 205,
"label": "土木2020-1班"
},
{
"id": 207,
"label": "土木2020-2班"
}
]
},
{
"id": 109,
"label": "城市规划"
}
]
}
]
}
]
}
},
methods: {
handleNodeClick(data) {
// data.children == null则为叶子节点
if (data.children == null) {
// this.queryParams.classId = data.id; ...略,这里可以做一些查询操作
console.log(data);
// 查询请求
// this.handleQuery();
} else {
return
}
},
// 清空
resetQuery(){
// 清空tree选中节点
this.$refs.tree.setCurrentKey(null);
// ...清空查询参数
this.queryParams = {}
}
}
}
</script>
<style></style>
原文地址:https://blog.csdn.net/hu4545/article/details/129443204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25706.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。