更新图的nodeDataArray后如何防止所有组件的位置更改?
How to prevent location change of all components after update of nodeDataArray of diagram?
我有这张图:
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.
中添加新项目后重新计算位置
通常当你添加或删除一个节点或一个link时,布局会重新执行。在这种情况下,您的 Diagram.layout 将再次发生,将手动调整的节点位置移回到布局认为它们应该在的位置。请阅读 http://gojs.net/latest/intro/layouts.html 了解更多详情,尤其是有关 "Layout Invalidation" 的部分。
对于你的情况,我不确定你真正想要完成什么。在您的 LayeredDigraphLayout 实例上将 Layout.isOngoing 设置为 false 可能就足够了。
我有这张图:
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.
中添加新项目后重新计算位置通常当你添加或删除一个节点或一个link时,布局会重新执行。在这种情况下,您的 Diagram.layout 将再次发生,将手动调整的节点位置移回到布局认为它们应该在的位置。请阅读 http://gojs.net/latest/intro/layouts.html 了解更多详情,尤其是有关 "Layout Invalidation" 的部分。
对于你的情况,我不确定你真正想要完成什么。在您的 LayeredDigraphLayout 实例上将 Layout.isOngoing 设置为 false 可能就足够了。