gpt4 book ai didi

javascript - 如何获取GOJS模板内的节点数据?

转载 作者:行者123 更新时间:2023-11-28 00:07:04 25 4
gpt4 key购买 nike

仅当数据中的文本等于特定字符串时,我才想创建一些文本 block 。如果没有 - 我只想创建一个文本 block 。

var template = GO(go.Node, "Auto",{desiredSize: new go.Size(width, height) },     
GO(go.Shape, shapeMap.getValue(shape), new go.Binding("fill", "fill")),
( ???? .includes("[UMS]")) ?
GO(go.Panel, "Vertical",
GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart1")),
GO(go.TextBlock,{text: "[UMS]", font: "7pt serif", click: function(e, obj) {window.open("https://" + obj.part.data.key + ":8090")}}, new go.Binding("stroke", "color")),
GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart2")))
:
GO(go.TextBlock,{font: "7pt serif"}, new go.Binding("stroke", "color"), new go.Binding("text", "txtPart1"))

);

如何测试 data.text 是否包含?

(我知道如何在 function:click: function(e, obj) {return obj.part.data.key }

或者如何声明它 - 使用绑定(bind) - 因此数据将是每个节点而不是每个模板。但在模板内的代码中??)

最佳答案

您可以添加一个数据绑定(bind),将 TextBlockPanel 的可见性绑定(bind)到 data.text。这是一个这样的例子:

      new go.Binding("visible", "text", function(textvalue) {
return (textvalue.indexOf("[UMS]") >= 0);
})

在该示例中,如果文本不包含 "[UMS]",则具有此绑定(bind)的 GraphObject 将不可见(不会显示,也不会占用空间) )。

这是一个完整的示例:http://codepen.io/simonsarris/pen/jPzyoa?editors=001

供后代使用的整个模板:

myDiagram.nodeTemplate =
$(go.Node, "Vertical",
new go.Binding('background', 'color'),
$(go.TextBlock,
{ margin: 3 },
new go.Binding("text", "key")),
// This textblock will be hidden if the data.text does not contain "three"
$(go.TextBlock,
{ margin: 3 },
new go.Binding("text", "text"),
new go.Binding("visible", "text", function(textvalue) {
return (textvalue.indexOf('three') >= 0);
})
)
);

您可以在此处阅读有关数据绑定(bind)和转换函数的更多信息:http://gojs.net/latest/intro/dataBinding.html

关于javascript - 如何获取GOJS模板内的节点数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com