GoJS的一些使用技巧


修改圖的內容

通過修改各種監聽方法中得到的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);
                    }
                });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM