簡體   English   中英

Javascript Infovis工具箱(JIT)在HyperTree中添加邊緣事件偵聽器

[英]Javascript infovis toolkit (JIT) adding edge event listener in HyperTree

我正在努力向Javascript Infovis工具箱庫中的HyperTree對象邊緣添加邊緣事件偵聽器。 我知道一個事實,那就是所有內容都圍繞“包含”方法,而默認的邊緣類型(“超線”)並未實現該方法。

我做了什么:我已經添加了代碼

Edge: {
           overridable: true,
           type: 'line',
           lineWidth: 4,
           color: '#bbb'
      }

到HyperTree構造函數。 我已經添加了類似的東西

Events: {
            enable: true,
            enableForEdges: true,
            type: 'Native',
            onClick: function (node, eventInfo, e) 
                if (!node) return;
                alert(node);
                if (node.nodeFrom) {
                   alert("target is a node");
                } else {
                   alert("target is an edge");
                }
            }
         }

跟隨這個問題 我沒有檢查谷歌瀏覽器的調試器,即contains方法觸發line edgeHelper在JIT源庫對象。 當我單擊某條邊時,所有contains調用僅對一條邊返回true ,而對其余對象返回false

注釋掉enableForEdges行並type: 'Native'防止jit edgeHelper行上contains方法的Aby觸發器。

但是,如果我在添加的onClick偵聽器上設置斷點,則無論是在邊緣還是在空白區域上單擊(無論如何)時,只要在節點外部單擊,都會得到node == false

所以總的問題是:如何在HyperTree的邊緣中正確添加事件偵聽器?

還有一個更狹窄的問題:我怎么能確定,當contains某行時返回true時,它實際上觸發了onClick偵聽器,同時在此處傳遞了一條邊,而不是false

jit.js中有一個錯誤。 我已經提交了pull-request

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM