el-tree 设置与上级严格关联、下级不严格关联
设置 关联 Tree el 严格 上级
2023-09-14 09:04:05 时间
<el-tree :data="getUserMenuData" :props="treeProps" node-key="id" show-checkbox check-strictly
ref="tree" :default-checked-keys="checkedId" @check="hanleCheck">
</el-tree>
data(){
return{
getUserMenuData:[],
treeProps: {
label: "title",
},
checkedId: [], //回显数组
}
}
hanleCheck(data, node) {
console.log(data,'+++++++++++++++')
const _this = this
// 获取当前节点是否被选中
const isChecked = this.$refs.tree.getNode(data).checked
// 如果当前节点被选中,则遍历上级节点和下级子节点并选中,如果当前节点取消选中,则遍历下级节点并取消选中
if (isChecked) {
// 判断是否有上级节点,如果有那么遍历设置上级节点选中
data.parentId && setParentChecked(data.parentId)
// 判断该节点是否有下级节点,如果有那么遍历设置下级节点为选中
data.children && setChildreChecked(data.children, true)
} else {
// 如果节点取消选中,则取消该节点下的子节点选中
data.children && setChildreChecked(data.children, false)
}
function setParentChecked(parenId) {
// 获取该id的父级node
const parentNode = _this.$refs.tree.getNode(data.parentId)
// 如果该id的父级node存在父级id则继续遍历
parentNode && parentNode.data && parentNode.data.parentId && setParentChecked(parentNode.data.parentId)
// 设置该id的节点为选中状态
_this.$refs.tree.setChecked(parenId, true)
}
function setChildreChecked(node, isChecked) {
node.forEach(item => {
item.children && setChildreChecked(item.children, isChecked)
_this.$refs.tree.setChecked(item.id, isChecked)
})
}
},
注:
监听treecheck方法,这里我们设置上级id的字段为parentId
通过parentId来判断当前节点是否有上级节点
比如说,当前的按钮是否有上级菜单
或者说,当前菜单是否还有上级菜单
效果图:
转载:
感谢分享:https://blog.csdn.net/q1ngqingsky/article/details/117131118
具体实现效果和思路请查看原文链接
相关文章
- Excel: 设置动态的二级下拉菜单
- springboot设置时区不起作用_docker设置时区
- uos系统如何设置开发者模式并获取和使用root权限
- 环境深入Linux:如何设置Vim编辑器(linux设置vim)
- Linux 主目录设置指南(linux设置主目录)
- Linux 下配置域名服务器实现 DNS 解析(linux设置域名服务器)
- Linux服务器:同步时间设置必乐维(linux服务器时间设置)
- Linux系统权限设置详解(linux的权限设置方法)
- Oracle 关联更新字段值设置为空(oracle关联更新为空)
- 配置CDH外部MySQL实现数据共享(cdh设置外部mysql)
- VistaIIS7添加PHP支持的设置方法
- android中设置TextView/Button走马灯(Marquee)效果示例
- MySQL远程访问设置终极方法