【问题标题】:gojs - Change color of node when selected, but go back to original color otherwise?gojs - 选择时更改节点的颜色,否则返回原始颜色?
【发布时间】:2020-01-19 20:31:42
【问题描述】:

这是我正在使用的节点模板:

      $(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”)。

有没有合适的方法来做到这一点?

任何帮助将不胜感激!谢谢

【问题讨论】:

    标签: javascript nodes gojs


    【解决方案1】:
    $(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()),
    

    【讨论】:

    • 写的时候报错:'GraphObject | 类型不存在属性'part' RowColumnDefinition'...
    • 没关系,添加:function (sel, shape: go.GraphObject) 做到了。这就像一个魅力。谢谢!
    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 2013-06-25
    • 2023-03-12
    • 2011-10-13
    • 2015-07-21
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多