在 GoJS 中获取面板的 TextBlocks

Getting TextBlocks of Panel in GoJS

我需要 GoJS 方面的帮助。我正在使用 SubGraphExpanderButtons 部分中 this page 上的示例。例如,我想通过单击 SubGraphExpanderButton 将组中所有 TextBlock 的颜色设置为红色。我添加 click 事件处理程序

...
$("SubGraphExpanderButton", {
    margin: new go.Margin(0, 3, 5, 0),
    click: function(e, button) {
       ...
    }
}),
...

根据示例的结构,我尝试让所有的 TextBlock 都像

button.panel.panel.elt(1)

因为按钮在水平面板中,所以水平面板在垂直面板中,而在垂直面板中有包含所有 TextBlock 的占位符。但这是错误的。我什至不确定这个选择器是否准确地得到了占位符,即使是这样,我也无法从我得到的对象中得到嵌套元素。看来我误解了 GoJS 的概念。

所以,我的问题是,我怎样才能得到所有的 TextBlocks 组?

组的成员节点和 Link 不在包含组的可视化树中。每个部分(包括节点和 Link 和组)都是一个 top-level 对象,其中 GraphObject.panel 为空。因此,您无法通过作为 Panels 和 GraphObjects 层次结构的可视化树导航来到达任何成员节点。也没有 vice-versa,从成员节点通过 .panel 到达包含组。

相反,您可以使用 Group.memberParts 访问其成员节点和 Links(如果有的话)。从一个节点或一个 Link 你可以查看 Part.containingGroup 去它的包含组,如果有的话。

button.part.memberParts.each(function(member) { if (member instanceof go.Node) { . . . } })

更多讨论在 https://forum.nwoods.com/t/getting-textblocks-of-panel-in-gojs/8009