在GoJS中获取Panel的TextBlocks

时间:2017-01-19 13:20:48

标签: javascript graph 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组?

1 个答案:

答案 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