Я пытаюсь создать сетевой рабочий процесс с помощью Cytoscape и AngularJS 1.6. После создания двух узлов пользователь может создать границу между ними. Для этого я использую функцию cy.on('cxttap')
cytoscape, чтобы обнаруживать правые клики на обоих узлах, а затем вставлять новое ребро. Это прекрасно работает. Пока я не добавил новое представление, где пользователь может видеть сохраненные рабочие процессы из базы данных. Проблема в том, что если я открою вкладку «Просмотр», а затем вернусь на вкладку «Создание», функция cy.on('cxttap')
будет вызвана дважды, и на холст цитоскейпа будут вставлены два ребра, но в моей переменной области видимости будет сделана только одна запись. Раньше у меня была одна и та же фабрика для обоих представлений, но теперь я использую разные угловые фабрики для каждого.
Если я открываю переключатель между этими вкладками несколько раз, количество раз, когда я открываю вкладку просмотра, - это количество раз, когда вызывается функция, следовательно, больше количество строк.
Здесь (https://jsfiddle.net/y47kwpg7/4/) фрагмент кода для обоих моих представлений с их контроллерами. «Просмотр создания» --> «MlalTextWorkflowGeneratorCtrl» и «Просмотр просмотра» --> «MlalTextWorkflowViewerCtrl».
(Пожалуйста, простите меня, я не знаю, как заставить его работать в одном файле)
У меня есть фабрика для холста цитоскейпа, и у меня есть аналогичная фабрика для другого представления, но с другим выбором идентификатора.
Спасибо за помощь!