relation-graph
relation-graph copied to clipboard
对于一个使用层级数据的树形结构 默认进入时 我只想展开第一个节点之后子节点的第一个节点
这个咋处理下
我想要实现这样的效果
https://www.relation-graph.com/#/demo/graph-instance-api 你可以参考这个示例,示例中通过图谱实例方法expandNode展开了指定的节点:
const targetNodeId = 'a';
// 获取relation-graph 实例
const graphInstance = this.$refs.graphRef.getInstance();
// 调用实例方法获取节点对象
const targetNode = graphInstance.getNodeById(targetNodeId);
// 根据节点对象属性判断节点是否已经展开
if (targetNode.expanded === true) {
// 调用实例方法收缩节点
await graphInstance.collapseNode(targetNode, e); // 这个e可以不传,除非需要触发<relation-graph />组件的on-node-click事件且该事件中需要使用到event对象
} else {
// 调用实例方法展开节点
await graphInstance.expandNode(targetNode, e);// 这个e可以不传,除非需要触发<relation-graph />组件的on-node-click事件且该事件中需要使用到event对象
}
同样的,你可以根据你的需要展开或者关闭任何节点,以下方法你能用上: 1,getNodeById方法,你可以根据一个指定的节点id获取节点对象; 2,collapseNode(node)方法,你可以收起一个节点的所有子节点。 3,node.lot.childs可以获取到节点的所有字节点。 4,node.lot.parent可以获取到节点的父节点。
假设a是根节点:
const nodeA = graphInstance.getNodeById('a');
const firstChildOfNodeA = nodeA.lot.childs[0];
for (const childOfA of nodeA.lot.childs) {
if (childOfA !== firstChildOfNodeA) { // 如果不是第一个子节点,则关闭掉
graphInstance.collapseNode(childOfA);
}
}
这样就实现了只展示根节点下第一个子节点的效果了。