从具有节点位置的 JSON 文件加载 go.js 图表

loading go.js diagram from JSON file with node locations

通过将此行添加到代码的 nodeTemplate 部分,我已成功将节点的位置保存在 json 文件中:

myDiagram.nodeTemplate = $(go.Node, "Auto", new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),

json 文件如下所示:

"{ \"class\": \"GraphLinksModel\",\n \"nodeDataArray\": [ \n{\"text\":\"Node\", \"color\":\"white\", \"key\":-1, \"loc\":\"-105 -107\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-2, \"loc\":\"64.52284749830794 277\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-3, \"loc\":\"161.04569499661588 0\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-4, \"loc\":\"0 70\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-5, \"loc\":\"80.52284749830794 70\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-6, \"loc\":\"161.04569499661588 70\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-7, \"loc\":\"0 140\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-8, \"loc\":\"-166.47715250169205 182.99999999999997\"},\n{\"text\":\"Node\", \"color\":\"white\", \"key\":-9, \"loc\":\"161.04569499661588 140\"}\n ],\n \"linkDataArray\": [ \n{\"from\":-4, \"to\":-8},\n{\"from\":-7, \"to\":-5},\n{\"from\":-1, \"to\":-4},\n{\"from\":-2, \"to\":-5},\n{\"from\":-6, \"to\":-6},\n{\"from\":-6, \"to\":-9},\n{\"from\":-3, \"to\":-5}\n ]}"

但是,当我尝试从 Json 文件加载图表时,节点的布局被重新组织。我正在使用 basic diagram sample 作为代码。 我尝试将图表初始化更改为:

$(go.Diagram, "myDiagramDiv", // create a Diagram for the DIV HTML element { layout: $(go.GridLayout, { isInitial: false, isOngoing: false }),...

但它没有显示图表。如果我只保留 iOnGoing=false,它会显示但节点在一条直线上。

如果我想将节点保留在将图表保存到 json 文件时的位置,我做错了什么?

我通过写:myDiagram.nodeTemplate = $(go.Node, "Auto", { locationSpot: go.Spot.Center }, new go.Binding("position", "pos", go.Point.parse).makeTwoWay(go.Point.stringify),... 而不是 myDiagram.nodeTemplate = $(go.Node, "Auto", new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify), 来解决它(注意从“location”和“loc”到“position”和“pos”的变化)。 那解决了问题。

不需要更改图表初始化