2016-01-12 58 views
1

我已經創建了一個圖形,並通過拖放將單元格設置到它上面。但是,當發生丟棄或點擊時,我無法找到單擊的單元格的HTML使用。如何獲取maxGraph單元格的內容的ID

例如,我試圖獲取mxEvent.CLICK內拖動元素的ID。

graph.addListener(mxEvent.CLICK, function(sender, evt){ 

    var cell = evt.properties.cell; 
    // cell.id is the cell id, not an id of html that's inside of it. 
    if(cell) { 

     var outer = cell.value.outerHTML; // I can see the HTML here encoded 

    } 

}) 

更新: 所以我的HTML添加到細胞與value.setAttribute('htmlLabel', label);創建我可拖動的項目時。但htmlLabel似乎並不是evt對象中的任何一個關鍵字。

回答

1

我一直在使用MxGraph幾個月,現在在一個大型項目上,雖然它是一個很棒的庫,但在某些領域使用起來有點麻煩。

獲取HTML是其中的一個領域。

首先,你需要抓住用「MxGraph」工具集事件的對象,如下所示:

graph.addListener(mxEvent.CLICK, function(sender, event){ 

    var mouseEvent = event.getProperty('event'); 
    var selectedCell = event.getProperty('cell'); 

}); 

正如你已經制定出來,你可以從一開始小區ID選擇單元格,通過它的ID屬性,但除此之外,該對象上沒有其他事物。

要深入下去,您需要深入研究鼠標事件,您也可以獲得。

這只是一個普通的HTML事件,因此它有你期望找到的常規屬性。

在你的情況

mouseEvent.currentTarget.innerHTML 

會得到你的點擊的元素的HTML(您可能需要在調試器來探索不同的道路上,但在最新的Chrome版本肯定對我的作品)

儘管MxGraph使用SVG渲染了它的所有輸出,並且據我所知,渲染標籤上沒有標準的HTML ID屬性,實際上沒有渲染的圖形元素出現在他們身上有ID。

我一個星期前遇到這個問題,當我試圖抓住由MxGraph生成的輸出來做一些圖像處理,並且因爲我無法可靠地抓取單個圖像,我不得不求助於使用Base64編碼的字符串和使用MxGraph的API操縱單元格樣式表。

+0

感謝您的支持! – BenRacicot

+0

任何時間。如果它幫助某人跳過了我花了很多時間去解決問題,那就值得:-) – shawty

相關問題