移动节点后获取位置

Get location after moving node

移动节点后如何获取当前位置以保存到数据库新位置。

myDiagram.addDigramListener("SelectionMoved",
  function(e) {
    let part = e.subject.part;
    console.log(part)
  }
)

但是该部分总是为空,为什么?

e.subject是一个集合,是所有个移动的Parts的选择。移动的部分可能不止一个。

如果你有理由确定只有一个Part移动了,你可以这样写:

myDiagram.addDigramListener("SelectionMoved",
  function(e) {
    let part = e.subject.first();
    console.log(part.toString())
  }
)

但是如果你只是想将位置保存到数据库中,为什么不在位置上进行双向数据绑定呢? flowchart example 证明了这一点:

// The Node.location comes from the "loc" property of the node data,
// converted by the Point.parse static method.
// If the Node.location is changed, it updates the "loc" property of the node data,
// converting back using the Point.stringify static method.
new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),

我能够使用以下代码获取新位置和密钥


myDiagram.addDiagramListener("SelectionMoved", function(event) {

  // https://gojs.net/latest/api/symbols/Part.html#location
  // * PART
  var selectedNode = event.diagram.selection.first();

  console.log("selectedNode",selectedNode);
  console.log("selectedNodeKey",selectedNode.key);
  console.log("selectedNode", selectedNode.location.toString());
  console.log("selectedNode", selectedNode.location.x);
  console.log("selectedNode", selectedNode.location.y);
  console.log("locationObject", selectedNode.locationObject);

  //Save new location
  // key: selectedNode.key
  // location-x: selectedNode.location.x
  // location-y: selectedNode.location.y

});