javascript - gojs - 选择时更改节点的颜色,否则返回原始颜色?
问题描述
这是我正在使用的节点模板:
$(go.Node, "Auto",
{
deletable: false,
selectionAdorned: false
},
new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
$(go.Shape, "Terminator",
{
fill: "#f8da07", strokeWidth: 2, minSize: new go.Size(90, 40), portId: "", cursor: "pointer", stroke: '#000000', fromLinkable: true,
toLinkable: false, fromLinkableSelfNode: false, toLinkableSelfNode: false, fromLinkableDuplicates: false, toLinkableDuplicates: false, fromMaxLinks: 1
},
new go.Binding("figure"),
new go.Binding("fill", "color"),
new go.Binding("fill", "isSelected", function(sel) {
return sel ? "#e1e1e1" : [selfColor];
}).ofObject()),
{
click: (e, obj) => {
clickNode(e, obj);
}
},
$(go.TextBlock,
{
stroke: "#000000", margin: 4, editable: false, font: "bold 12pt sans-serif", isMultiline: true
},
new go.Binding("text").makeTwoWay())
);
您可以看到节点的默认颜色是#f8da07,但它实际上是由节点自身颜色属性写入的,行“new go.Binding("fill", "color")"。
事实上,我无法知道哪个是当前选择的节点的颜色代码。
当我选择它时,我希望能够将节点的颜色更改为“#e1e1e1”,但我也希望它在不选择时更改回旧颜色 - (不是“#f8da07”)。
有没有合适的方法来做到这一点?
任何帮助将不胜感激!谢谢
解决方案
$(go.Shape,
{ fill: "#f8da07" }, // default color
new go.Binding("fill", "color"),
new go.Binding("fill", "isSelected", function(sel, shape) {
return sel ? "#e1e1e1" : shape.part.data.color || "#f8da07";
}).ofObject()),
推荐阅读
- python - 如何在 Python 中使用 request 或 aoihttp 实现 CURL -o
- firebase - Firestore 规则
- applet - 编写一个使用 NFC 的小程序有什么不同吗?
- r - 如何在 R 中使用 ggplot2 制作《金融时报》多面图表
- python - Paho 订阅者 on_message -回调函数移动到单独的文件中
- python - 仅在numpy中使用random.random获取-2和2之间的浮动随机数?
- python - 从不同线程加载和运行 TensorFlow 模型
- elasticsearch - Elasticsearch 7.2.0:master 尚未被发现或选举,选举至少需要 X 个节点
- javascript - 淡入淡出文本,停在最后一个文本
- azure - 从邀请登录后 Azure B2B 应用程序重定向到 Web 应用程序