q-tree: Is there a getParentNode() method?
-
Each node in my tree has a unique nodeid property and
node-key="nodeid"
.With a set of ticked nodes, I also need to get their parents.
getNodeByKey()
andgetTickedNodes()
return node objects but it seems I cannot do:const aNode = this.$refs.myTree.getNodeByKey(nodeid) const parentNode = aNode.getParent()
Instead I have made my own method:
getParentNode (nodeid) { const nodeMeta = this.$refs.myTree.meta[nodeid] const parentNode = this.$refs.myTree.getNodeByKey(nodeMeta.parent.key) return parentNode }
Am I missing something or is that the way to do it?
Thanks,
Murray -
A more robust version:
getParentNode (nodeid) { let parentNode = null if (nodeid) { const nodeMeta = this.$refs.projectTree.meta[nodeid] if (nodeMeta.parent) { parentNode = this.$refs.projectTree.getNodeByKey(nodeMeta.parent.key) } } return parentNode }
-
@murrah I use a recursive function for this, my node structure is unlimited nesting. i use scope-slots ie.
// node model [{ id: 1, // unique id name: '', description: '', children: [], // same array of objects like this node parent_id: null, // null indicates this node is root, else holds id of its immediate parent ... // other props }]
getRootNode (tree, node) { let curNode = node.parent_id !== null ? tree.getNodeByKey(node.parent_id) : node if (curNode.parent_id !== null) { curNode = this.getRootNode(tree, curNode) } return curNode }
-
@metalsadman Thanks!