修改圖的內容
通過修改各種監聽方法中得到的part內部的結構data等
或者直接遍歷
myDiagram.model.nodeDataArray
myDiagram.model.linkDataArray
//修改完成調用以下方法完成重建
myDiagram.rebuildParts()
修改內容對應的data內容
調用即可
刪除某個節點
myDiagram.remove(part)
通過全局變量獲取某個選擇的節點
var Select_Port = null;
myDiagram.addDiagramListener("ObjectSingleClicked", function(e) {
Select_Port = e.subject.part;
});
myDiagram.addDiagramListener("ObjectContextClicked", function(e) {
Select_Port = e.subject.part;
});
結合undoManager創建撤銷重做刪除的工具欄
$('#deletePart').click(function(){
if("undefined" == typeof myDiagram){
result_prompt(0, "瀏覽器不兼容此功能,請使用高版本谷歌瀏覽器!");
return false;
}
myDiagram.remove(Select_Port);
});
$('#undo-buttun').click(function(){
if("undefined" == typeof myDiagram){
result_prompt(0, "瀏覽器不兼容此功能,請使用高版本谷歌瀏覽器!");
return false;
}
myDiagram.undoManager.undo();
});
$('#redo-buttun').click(function(){
if("undefined" == typeof myDiagram){
result_prompt(0, "瀏覽器不兼容此功能,請使用高版本谷歌瀏覽器!");
return false;
}
myDiagram.undoManager.redo();
});
利用繪圖過程中的一些DiagramListener完成更多的數據交互體驗
可以在創建Diagram時進行創建對應的監聽、通過遍歷監聽可以得到想要的組件
myDiagram =
goObj(go.Diagram, "myDiagramDiv",
{
initialContentAlignment: go.Spot.Center,
allowDrop: true,
"LinkDrawn": showLinkLabel,
"LinkRelinked": showLinkLabel,
"animationManager.duration": 800,
"undoManager.isEnabled": true
});
function showLinkLabel(e) {
var label = e.subject.findObject("LABEL");
if (label !== null) label.visible = (e.subject.fromNode.data.figure === "RoundedRectangle");
}
也可以后面添加各種監聽上去,具體事件可以查看API
myDiagram.addDiagramListener("Modified", function(e) {
var button = document.getElementById("SaveButton");
if (button) button.disabled = !myDiagram.isModified;
var idx = document.title.indexOf("*");
if (myDiagram.isModified) {
if (idx < 0) document.title += "*";
} else {
if (idx >= 0) document.title = document.title.substr(0, idx);
}
});
myDiagram.addDiagramListener("ExternalObjectsDropped", function(e) {
try {
e.subject.each(function(part) {
//此處處理part
);
} catch (err) {
console.warn(err);
}
});