gojs-选中时更改节点的颜色,但是否则返回原始颜色吗?

时间:2019-09-18 20:26:41

标签: javascript nodes gojs

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

    $results = [];

    foreach($calendar_events as $calendar_event)
    {
        $ev = [];
        $ev["title"] = $calendar_event->name;
        $ev["color"] = $calendar_event->calendar->color ?? "f47d30";

        $ev["start"] = Carbon::parse($calendar_event->start)->format("Y-m-d");
        $ev["end"]   = Carbon::parse($calendar_event->end)->format("Y-m-d");

        if (!$calendar_event->is_allday)
        {
            $ev["start"]  = Carbon::parse($calendar_event->start."T".$calendar_event->start_time)->format("Y-m-d\TH:i:s");
            $ev["end"]    = Carbon::parse($calendar_event->end."T".$calendar_event->end_time)->format("Y-m-d\TH:i:s");
            $ev["allDay"] = false;
        }

        if (!empty($calendar_event->url))
        {
            $ev["url"] = $calendar_event->url;
        }

        $results[] = $ev;
    }

    return response($results);

您可以看到该节点的默认颜色是#f8da07,但实际上它是由节点自身的color属性通过“ new go.Binding(“ fill”,“ color”)“行编写的。

事实上,我无法知道哪个是所选节点的当前颜色代码。

我希望能够在选择节点时将其颜色更改为“#e1e1e1”,但是我还希望在不选择时将其颜色更改回旧颜色(而不是“#f8da07”)。

有适当的方法吗?

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

1 个答案:

答案 0 :(得分: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()),