根据对象数据进行判断节点、线是否可以删除的时候 使用
PS:GOJS 1.6~1.9.?,2.0以后e.cancel = true不能使用
以下例子为根据key 判断是否可以删除,如不允许删除,设置e.cancel = true;即可
//监听节点或线的删除前事件
myDiagram.addDiagramListener("SelectionDeleting", function(e) {
e.subject.each(function(n) {
//n为删除节点或线的对象
console.log(n.data);
if(n.data.text == "开始") {
//不允许删除,给e.cancel赋值,只能在gojs 2.0以下使用
//在gojs 2.0中,cancel是不赞成的,有关更多信息,请参见GoJS更改日志。
e.cancel = true;
}
});
})
PS:GOJS 2.0 以后
GOJS 2.0 以后,取消了e.cancel = true; 拦截删除的功能,通过另外一种方式实现,重写键盘工具类commandHandler的canDeleteSelection,去拦截调用deleteSelection 实现取消删除的功能
myDiagram.commandHandler.canDeleteSelection = function(e) {
//用例获取选中的节点或线
return myDiagram.selection.all(function(nodeOrLink) {
console.log(nodeOrLink.data);
//判断是否存在不允许删除的节点或线
if(nodeOrLink.data.text=="勘察设计"){
console.log("根存在不允许删除的节点,取消删除");
return false;
}else{
return true;
}
});
}