更新图的nodeDataArray后如何防止所有组件的位置变化?

时间:2016-11-08 08:38:33

标签: javascript gojs

我有这个图表:

var $ = go.GraphObject.make;
var diagram = $(go.Diagram, element[0], {
     initialContentAlignment: go.Spot.TopCenter,
     initialScale: 1,
     layout: $(go.LayeredDigraphLayout, { direction: 0 }),
     isReadOnly: false,
     allowLink: true,
     allowClipboard: false,
     animationManager.duration: 200,
     undoManager.isEnabled: false
});

我创建了几个简单元素,并使用 addNodeDataCollection 方法将它们添加到图模型中。然后我更改元素的位置,并再添加一个到 nodeDataArray 。我希望在添加新元素后,旧项目的位置不会改变,但事实并非如此。所有项目的位置都会更改,所有元素都按中心对齐。这是正确的行为吗?在 nodeDataArray 中添加新项目后,我没有找到如何防止重新计算位置。

1 个答案:

答案 0 :(得分:1)

通常,当您添加或删除节点或链接时,将再次执行布局。在这种情况下,您的 Diagram.layout 将再次发生,将手动调整的节点位置移回布局认为应该的位置。请阅读http://gojs.net/latest/intro/layouts.html了解更多详情,尤其是关于"布局失效"的部分。

在你的情况下,我不确定你真正想要完成什么。在 LayeredDigraphLayout 实例上将 Layout.isOngoing 设置为false可能就足够了。