Das Problem, das wir haben, ist, wenn wir auf das Ereignis 'ngDialog.closed' hören, fanden wir, dass es mehrfach feuert. Wir öffnen den Dialog nur einmal, also nehmen wir an, dass das gleiche Modal auch nur einmal ausgelöst werden soll. Es gibt mehrere modals über die Anwendung, und wir hören für diese spezifische modal, indem es $ rootScope Befestigung, etwa so:ngDialog geschlossen Ereignis löst mehrere Male aus (AngularJS)
$rootScope.$on('ngDialog.closed', function (e, $dialog) {
console.log("CLOSED TEHE MODAL", $dialog);
console.log("EVENT", e);
if($rootScope.modalFinished && localStorage.getItem("tourComplete") !== "true"){
$rootScope.modalFinished = false;
console.log("THIS IS LOCAL STORE:", localStorage.getItem("tourComplete"));
$scope.CallMe();
}
});
Der Grund, warum wir über $ rootScope hören ist dieses „geschlossen“ Ereignis übergeben wird von einem Controller (das modale) zu einem anderen Controller (Startbildschirm), der bereits vor dem modalen Controller geladen wurde.
Wir haben festgestellt, dass beim Ereignis 'ngDialog.closed' mehrere Ereignisse ausgelöst werden (in der Regel bis zu 2 bis 3 Mal pro Schließen eines Modales).
Hier ist, wo wir die ngDialog (im Login-Controller) öffnen:
$state.go('app.dashboard')
if(AclService.can('edit')|| AclService.can('admin')){
$scope.$on('$stateChangeSuccess', function onStateSuccess(event, toState, toParams, fromState){
$rootScope.modalFinished = true;
CauseService.get().then(function(result){
var cause = result[0].attributes;
if(!cause.has_backlinked || !cause.has_verified_address){
// $rootScope.modalFinished = true;
ngDialog.open({
template: '../../app/views/dashboard/progress_modal.html',
showClose: false,
className: 'ngdialog-theme-default progressModal',
controller: 'ProgressModalController',
resolve:{
'Cause': ['CauseService', function(CauseService){
// console.log("CauseService in routes", CauseService.get());
return CauseService.get();
}]
}
});
}
});
});
}
Jede Hilfe wäre sehr geschätzt.
Vielen Dank.
-M-