我正在擴展mxgraph刪除控件example以添加刪除控件到我的圖中動態生成的節點。該示例的源代碼可here應用mxgraph無限循環
的問題是在這部分代碼 -
// Overridden to add an additional control to the state at creation time
mxCellRendererCreateControl = mxCellRenderer.prototype.createControl;
mxCellRenderer.prototype.createControl = function(state)
{
mxCellRendererCreateControl.apply(this, arguments);
var graph = state.view.graph;
if (graph.getModel().isVertex(state.cell))
{
if (state.deleteControl == null)
mxCellRendererCreateControl.apply重寫的回調createControl內似乎意在工作(調用在創建附加控件之前的原始功能)與負載上圖形的初始狀態。但是,一旦我動態地將節點添加到圖中,並且回調由mxgraph的validate/redraw調用,控件進入無限循環,其中'apply'函數基本上保持調用自己(即回調)。
我有點無知,因爲當我調試時,上下文(this)看起來不錯,但我找不到原因而不是調用原型方法,它只是在循環中調用重寫的函數。我究竟做錯了什麼?
你能細說什麼'mxCellRendererCreateControl'是,爲什麼其他地區你重寫並使用'prototype'? –
是否可以創建一個最小的在線示例? –
@GhassenLouhaichi mxCellRendererCreateControl是mxCellRenderer.js中的createControl方法。你可以在這裏看到它的來源 - https://github.com/jgraph/mxgraph/blob/master/javascript/src/js/view/mxCellRenderer.js,第600行。它創建你想要的基本矩形/形狀先在形狀頂部繪製並添加刪除控件之前先顯示。至於爲什麼我重寫它,這只是mxgraph中的推薦方式。您可以在此帖子中發佈的第一個示例鏈接中看到這一點。您可以在節點頂部看到刪除圖標。這些是由壓倒性的。 – Jay