GoJS流程图控件为开发人员提供了多种常用的客户端事件,利用这些事件客户可以进行特殊操作,自定义功能等,像"ObjectSingleClicked", "BackgroundDoubleClicked", "ClipboardPasted", and "SelectionDeleting"这几个事件都是常用的事件,下面的代码阐释了GoJS事件的使用方法:
function showMessage(s) {
document.getElementById("diagramEventsMsg").textContent = s;
}
diagram.addDiagramListener("ObjectSingleClicked",
function(e) {
var part = e.subject.part;
if (!(part instanceof go.Link)) showMessage("Clicked on " + part.data.key);
});
diagram.addDiagramListener("BackgroundDoubleClicked",
function(e) { showMessage("Double-clicked at " + e.diagram.lastInput.documentPoint); });
diagram.addDiagramListener("ClipboardPasted",
function(e) { showMessage("Pasted " + e.diagram.selection.count + " parts"); });
diagram.addDiagramListener("SelectionDeleting",
function(e) {
if (e.diagram.selection.count > 1) {
e.cancel = true;
showMessage("Cannot delete multiple selected parts");
}
});
var nodeDataArray = [
{ key: "Alpha" },
{ key: "Beta", group: "Omega" },
{ key: "Gamma", group: "Omega" },
{ key: "Omega", isGroup: true },
{ key: "Delta" }
];
var linkDataArray = [
{ from: "Alpha", to: "Beta" }, // from outside the Group to inside it
{ from: "Beta", to: "Gamma" }, // this link is a member of the Group
{ from: "Omega", to: "Delta" } // from the Group to a Node
];
diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);