Ich erweitere mxgraph delete Steuerelement example zu löschen wie Steuerelemente zu Knoten hinzufügen, die dynamisch in meinem Diagramm generiert werden. Der Quellcode für das Beispiel verfügbar ist heremxgraph Endlosschleifen anwenden
Das Problem ist in diesem Teil des Codes -
// 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 innerhalb des überschriebenen Rückruf von create scheint wie beabsichtigt zu arbeiten (ruft die Originalfunktion vor dem Erstellen zusätzlicher Kontrollen) mit dem Ausgangszustand des Graphen beim Laden. Aber sobald ich Knoten dynamisch zum Graphen hinzufüge und der Callback von mxgraphs validate/redraw aufgerufen wird, geht das Steuerelement in eine Endlosschleife über, wobei die 'apply' -Funktion sich grundsätzlich selbst aufruft (d. H. Der Callback).
Ich bin ein bisschen ratlos, weil, wenn ich debugge, der Kontext (das) sieht gut aus, aber ich kann nicht herausfinden, warum anstelle des Aufrufs der Prototyp-Methode, ruft nur die überschriebene Funktion in einer Schleife. Was mache ich falsch?
Können Sie erarbeiten, was 'mxCellRendererCreateControl' ist und warum Sie überschreiben und verwenden 'Prototyp'? –
Ist es möglich, ein minimales Online-Beispiel zu erstellen? –
@GhassenLouhaichi mxCellRendererCreateControl ist die createControl-Methode in mxCellRenderer.js. Sie können die Quelle hier sehen - https://github.com/jgraph/mxgraph/blob/master/javascript/src/js/view/mxCellRenderer.js, Zeile 600. Es erstellt das grundlegende Rechteck/Shape, das Sie wollen zuerst anzeigen, bevor Sie über die Form zeichnen und ein Löschsteuerelement hinzufügen. Warum ich es übertreibe, das ist nur der empfohlene Weg, es in mxgraph zu tun. Sie können dies im ersten Beispiel-Link sehen, der auf diesem Beitrag gepostet wird. Über den Knoten können Sie Löschsymbole sehen. Diese werden durch Überschreiben gezeichnet. – Jay