vue 树节点递归获取父节点 id
2023-12-18 19:09:47
思路:
首先,递归循环tree节点的所有节点;
然后创建一个map类型去接,set所有节点的id对属性名,递归循环节点就把父对象id去赋值子节点的id;
所有tree树形数据结构,就会有parentID,id,没有父节点可以默认赋值parentID=0。
import MenuData from 'xxx公共方法'
const treeList = {
'code': '1',
'text': '公司1',
'leaf': false,
'children': [
{
'code': '2',
'text': '部门',
'leaf': false,
'children': [
{
'code': '3',
'text': '小组1',
'leaf': true,
'children': null
},
{
'code': '4',
'text': '小组2',
'leaf': true,
'children': null
}
]
},
{
'code': '5',
'text': '公司2',
'leaf': false,
'children': [
{
'code': '6',
'text': '简称',
'leaf': true,
'children': null
}
]
}
]
}
const treeMenu = new MenuData(treeList, 'code')
// 获取tree的parentId
const parent = treeMenu.getParent(node.code)
公共方法:
class MenuData {
menuMap = new Map();
menus = [];
codeName = ''
constructor(data, code) {
this.codeName = code || 'id'
this.init(data)
}
init(data) {
data.forEach(item => {
item.parentId = '0'
this.deepSetItem(item)
})
}
deepSetItem(item) {
this.menuMap.set(item[this.codeName], item)
this.menus.push(item)
if (item.children) {
item.children.forEach(menuItem => {
menuItem.parentId = item[[this.codeName]] // item[[this.codeName]]是父节点的 id, menuItem.parentId是当前节点 id
this.deepSetItem(menuItem)
})
}
}
getMenuById(id) {
return this.menuMap.get(id)
}
getChildern(id) {
return this.menuMap.get(id).children
}
getParent(id) {
const item = this.getMenuById(id)
const parent = this.getMenuById(item.parentId)
return parent
}
}
export default MenuData
文章来源:https://blog.csdn.net/weixin_39808181/article/details/135066073
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!