P粉8113491122023-09-01 18:38:29
在这种情况下,点击事件最终触发的是类似于“开关”的行为。
默认情况下,我们看到根节点和层次结构的所有子节点。
点击至少有一个子节点的环(例如'A'),会过滤掉其父节点('Root')和兄弟节点('B'),并将该环视觉上作为新的根节点,我们只看到该环下的层次结构(即环过滤开关打开,事件数据中的属性nextLevel
相应地设置为'A',如“A是新的根节点”)。
再次点击该环 - 现在是最内层的圆环 - 关闭过滤器,父节点和兄弟节点重新出现,nextLevel
设置为'Root'。
点击没有子节点的环(例如'a'或'B')没有效果,因此在这种情况下nextLevel
未定义。
实际上,属性nextLevel
反映了状态的变化。
现在为了更好地理解点击处理程序中发生的情况,您可能想要检查currentpath
(或为了一致性,稍微调整过的版本)以及nextLevel
的存在/值:
Plotly.newPlot('graph', [{ type: 'sunburst', parents: ['', 'Root', 'Root', 'A'], labels: ['Root', 'A', 'B', 'a'] }]).then(gd => { gd.on('plotly_sunburstclick', data => { const pt = data.points[0] const path = ((pt.currentPath ?? '/') + pt.label).replace('Root', '') console.log('path:', path) // 点击元素的路径 console.log('nextLevel:', data.nextLevel) // 如果有的话,新根节点的标签 }) })