Ich versuche, einen Netzwerk-Workflow mit Cytoscape und AngularJS 1.6 erstellen Nach dem Erstellen von zwei Knoten ist der Benutzer in der Lage, eine Kante zwischen ihnen zu erstellen. Dazu verwende ich cy.on('cxttap')
Cytoscape-Funktion, um rechte Klicks auf beiden Knoten zu erkennen und dann eine neue Kante einzufügen. Das funktioniert gut. Bis ich eine neue Ansicht hinzugefügt habe, wo der Benutzer gespeicherte Workflows von der Datenbank sehen kann. Das Problem ist, wenn ich die Registerkarte "Ansicht" öffne und dann zur Registerkarte "Erstellung" zurückwechsle, wird die Funktion cy.on('cxttap')
zweimal aufgerufen, und zwei Kanten werden in die Cytoscape-Zeichenfläche eingefügt, aber nur ein Eintrag in meiner Bereichsvariablen. Ich hatte früher die gleiche Fabrik für beide Ansichten, aber jetzt benutze ich verschiedene eckige Fabriken für jeden.Cytoscape-Ereignis cxtap mehrmals aufgerufen
Wenn ich zwischen diesen Registerkarten mehrmals öffne, ist die Häufigkeit, mit der ich die Ansichtsregisterkarte öffne, die Anzahl der Aufrufe der Funktion, also mehr die Anzahl der Zeilen.
Hier (https://jsfiddle.net/y47kwpg7/4/) ist das Snippet mit dem Code für beide Ansichten mit ihren Controllern. "Creation View" -> "MlalTextWorkflowGeneratorCtrl" und "Viewing View" -> "MlalTextWorkflowViewerCtrl".
(Bitte verzeihen Sie mir, ich weiß nicht, wie es in einer einzigen Datei arbeiten zu machen)
Die Fabrik ich hier ist für die Cytoscape Leinwand haben, und haben ein ähnliches für eine andere Ansicht, aber mit eine andere ID-Auswahl.
Vielen Dank für Ihre Hilfe!
Ich erstelle eine neue Instanz jedes Mal, wenn ich eine neue Ansicht erstellen, aber das Problem, das ich erkannte, ist, dass die Listener neu geschrieben werden, irgendwelche Eingaben, wie kann ich die alten Listener entfernen, bevor Sie die Ansicht verlassen? –