0

Cytoscape と AngularJS 1.6 を使用してネットワーク ワークフローを作成しようとしています。2 つのノードを作成した後、ユーザーはそれらの間にエッジを作成できます。このために、cy.on('cxttap')サイトスケープ機能を使用して両方のノードで右クリックを検出し、新しいエッジを挿入しています。これはうまくいきます。ユーザーがデータベースから保存されたワークフローを表示できる新しいビューを追加するまで。問題は、[表示] タブを開いてから [作成] タブに戻ると、cy.on('cxttap')関数が 2 回呼び出され、サイトスケープ キャンバスに 2 つのエッジが挿入されますが、スコープ変数には 1 つのエントリしか作成されないことです。以前は両方のビューに同じファクトリを使用していましたが、現在はそれぞれに異なる角度のファクトリを使用しています。

これらのタブの切り替えを複数回開くと、表示タブを開く回数が関数が呼び出される回数になるため、行数が増えます。

ここ ( https://jsfiddle.net/y47kwpg7/4/ ) は、ビューとコントローラーの両方のコードを含むスニペットです。「作成ビュー」→「MlalTextWorkflowGeneratorCtrl」と「閲覧ビュー」→「MlalTextWorkflowViewerCtrl」。

(許してください、単一のファイルで動作させる方法がわかりません)

ここにあるファクトリは cytoscape キャンバス用であり、別のビュー用に同様のものを持っていますが、id の選択が異なります。

ご協力ありがとうございました!

4

2 に答える 2

1

あなたはする必要があります

(1) インスタンスを再利用している場合は、古いリスナーを削除するか、または

(2) 新しいビューを作成するたびに新しいインスタンスを作成します。

于 2017-07-10T14:38:30.177 に答える