relation-graph icon indicating copy to clipboard operation
relation-graph copied to clipboard

对于一个使用层级数据的树形结构 默认进入时 我只想展开第一个节点之后子节点的第一个节点

Open wz0322 opened this issue 2 years ago • 3 comments

image

wz0322 avatar Jan 10 '24 07:01 wz0322

这个咋处理下

wz0322 avatar Jan 10 '24 07:01 wz0322

我想要实现这样的效果

wz0322 avatar Jan 10 '24 07:01 wz0322

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);
    }
}

这样就实现了只展示根节点下第一个子节点的效果了。

seeksdream avatar Jan 15 '24 10:01 seeksdream