通过键选择 GoJS 项目(节点)
GoJS Item (Node) selection via key
在 Angular 中使用打字稿,我如何 select 图表中的节点使用其键?
当我创建一个新节点时,我必须用鼠标左键单击它才能select它,我希望它立即被select编辑。
为了 select 具有键“1”的节点,我必须在图表上调用哪个函数,这是我尝试过的方法,但似乎不起作用:
selectItem(item: any) {
this.selectedItem = item;
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
if (this.selectedItem['toPort']) {
this.selectedItemtype = 'Link';
this.myDiagram.select(this.myDiagram.findLinkForData(item));
} else {
this.selectedItemtype = 'Node';
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
}
// this.rerender();
}
我从树上放下一个项目,有 2 个 windows、图表 window 和一个 属性 window(我在其中编辑节点的属性) ,我需要能够在放置项目时直接编辑属性,但似乎如果我编辑项目,而不是单击放置的项目,它们不再相同,并且以前编辑的项目丢失。
这基本上是正确的,但不必要地复杂。但是要么你做了两次(如果它是一个节点),要么你可能找不到 link 如果它在模型中不是相同的 link 数据对象。
如果您通过设置 GraphLinksModel.linkKeyProperty 在 GraphLinksModel 中为 link 启用了键,这应该足够了:
if (item.toPort !== undefined) {
myDiagram.select(myDiagram.findPartForKey(item.key));
} else {
myDiagram.select(myDiagram.findNodeForKey(item.key));
}
如果您没有为 link 数据启用维护唯一键,您将需要执行与 links 相同的操作:
myDiagram.select(myDiagram.findLinkForData(item));
但这又取决于您的 item 是否与 GraphLinksModel.linkDataArray 中的对象引用相同。如果不是同一个指针,您可能需要调用 Diagram.findLinksByExample 并选择一个。
关于 属性 编辑器,您是否使用 DataInspector,https://gojs.net/latest/extensions/DataInspector.html?如果是这样,那应该就可以了。如果您已经实现了自己的 HTML 元素来编辑属性,那么您可能引用了错误的引用。你应该showing/editing第一部分的属性在Diagram.selection。当用户从另一个图表(或同一个图表)拖放节点的新副本时,新副本将在 Diagram.selection 集合中。
在 Angular 中使用打字稿,我如何 select 图表中的节点使用其键?
当我创建一个新节点时,我必须用鼠标左键单击它才能select它,我希望它立即被select编辑。
为了 select 具有键“1”的节点,我必须在图表上调用哪个函数,这是我尝试过的方法,但似乎不起作用:
selectItem(item: any) {
this.selectedItem = item;
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
if (this.selectedItem['toPort']) {
this.selectedItemtype = 'Link';
this.myDiagram.select(this.myDiagram.findLinkForData(item));
} else {
this.selectedItemtype = 'Node';
this.myDiagram.select(this.myDiagram.findNodeForKey(item.key));
}
// this.rerender();
}
我从树上放下一个项目,有 2 个 windows、图表 window 和一个 属性 window(我在其中编辑节点的属性) ,我需要能够在放置项目时直接编辑属性,但似乎如果我编辑项目,而不是单击放置的项目,它们不再相同,并且以前编辑的项目丢失。
这基本上是正确的,但不必要地复杂。但是要么你做了两次(如果它是一个节点),要么你可能找不到 link 如果它在模型中不是相同的 link 数据对象。
如果您通过设置 GraphLinksModel.linkKeyProperty 在 GraphLinksModel 中为 link 启用了键,这应该足够了:
if (item.toPort !== undefined) {
myDiagram.select(myDiagram.findPartForKey(item.key));
} else {
myDiagram.select(myDiagram.findNodeForKey(item.key));
}
如果您没有为 link 数据启用维护唯一键,您将需要执行与 links 相同的操作:
myDiagram.select(myDiagram.findLinkForData(item));
但这又取决于您的 item 是否与 GraphLinksModel.linkDataArray 中的对象引用相同。如果不是同一个指针,您可能需要调用 Diagram.findLinksByExample 并选择一个。
关于 属性 编辑器,您是否使用 DataInspector,https://gojs.net/latest/extensions/DataInspector.html?如果是这样,那应该就可以了。如果您已经实现了自己的 HTML 元素来编辑属性,那么您可能引用了错误的引用。你应该showing/editing第一部分的属性在Diagram.selection。当用户从另一个图表(或同一个图表)拖放节点的新副本时,新副本将在 Diagram.selection 集合中。