ユーザーがクリックして一部の情報の詳細を表示するリンクがあります。このクリックにより、次のような ng-dialog open イベントが発生します。
ngDialog.open({
template: 'partials/acaoDetalhe.html',
className: 'ngdialog-theme-default ngDialogSize',
controller: MetaController,
scope: $scope
});
ダイアログが開かれると、リスナーは MetaController の他の情報を取得します。
$scope.$on('ngDialog.opened', function (e, $dialog) {
console.log('ngDialog opened: ' + $dialog.attr('id'));
$scope.$broadcast('getMetaCompletaEvent', $scope.meta.id);
});
ユーザーが最初にリンクをクリックすると、正常に機能します。コントローラーの関数が呼び出され、バックエンドから情報が取得されます。しかし、ユーザーがダイアログ ウィンドウの外側をクリックしてリンクを再度クリックすると、コントローラーのメソッドが 2 回呼び出されます。ユーザーがダイアログをもう一度「閉じて」リンクをもう一度クリックすると、コントローラーのメソッドが 3 回呼び出されます。ダイアログが非表示のままのようで、ユーザーがリンクをクリックするたびに、新しいダイアログが開き、別のコントローラーが作成されます。なぜそれが起こるのですか?ユーザーがダイアログの外をクリックした後、他のダイアログを実際に閉じる必要があります。