我需要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组?
答案 0 :(得分:1)
组的成员节点和链接不在包含组的可视树中。每个零件(包括节点和链接和组)都是顶级对象, GraphObject.panel 为空。因此,您无法浏览作为Panels和GraphObjects层次结构的可视化树来访问任何成员Node。反之亦然,从成员节点到.panel
到达包含组。
相反,您可以使用 Group.memberParts 来获取其成员节点和链接(如果有)。从节点或链接中,您可以查看 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。