监听连线事件:
myDiagram.addDiagramListener("LinkDrawn", function(e){});可以监听连线事件
或者:
this.$store.state.process.myDiagram = gm(go.Diagram, "myDiagramDiv", // must name or refer to the DIV HTML element
{
// initialContentAlignment: go.Spot.Center, // 居中显示
// initialAutoScale: go.Diagram.Uniform, //自动缩放,适应屏幕
allowDrop: true, // must be true to accept drops from the Palette
***"LinkDrawn": this.showLinkLabel,***
***"SelectionDeleting": this.deleteNode,***
// "LinkRelinked": this.showLinkLabel,
// scrollsPageOnFocus: false,
"undoManager.isEnabled": true, // enable undo & redo
layout: gm(go.TreeLayout, {
angle: 90,
nodeSpacing: 10,
layerSpacing: 40,
// layerStyle: go.TreeLayout.LayerUniform
})
});
代码如下:
showLinkLabel(e) {
//获取开始节点linkdataarray中的from所代表的节点
let startNode = e.diagram.model.findNodeDataForKey(e.subject.data.from);
//获取结束节点linkdataarray中的to所代表的节点
let endNode = e.diagram.model.findNodeDataForKey(e.subject.data.to);
//判断节点是否符合规则(就是是否符合顺序要求)
if ((startNode.type === 4 || startNode.type === 2) && endNode.type === 3 || startNode.type === 3 && (endNode.type === 4 || endNode.type === 2)) {
return;
}
if (startNode.type > endNode.type) {
//删除连线 e.subject.data代表当前所画的连线
e.diagram.model.removeLinkData(e.subject.data);
return this.$Message.error(startNode.name + "到" + endNode.name + "节点间连线错误")
}
},
另外附删除节点事件:
deleteNode(e) {
//获取所删除的节点
e.diagram.selection.each(nodeOrLink => {
if(nodeOrLink instanceof go.Node){//所选择节点
let nodeData = nodeOrLink.data;
let dataLoadCols = this.$store.state.process.dataCols;
let index = dataLoadCols.findIndex(item => item.id === nodeData.id);
if(index !== -1){
dataLoadCols.splice(index,1);
}
}
});
},