0

Ich habe ein bisschen Probleme mit meinem $ionicModal s. Jedes Mal, wenn ich ein Modal öffne, erzwingt es eine leere Route, die dazu führt, dass $urlRouterProvider.otherwise('/login'); auftritt. Wenn ich $urlRouterProvider aus meiner Konfiguration nehme, funktioniert es gut - aber meine App startet nur auf einen leeren Bildschirm. Weiß jemand, was dieses Problem verursacht? Ich rufe die Ionic modals ziemlich standardmässig in meinem FeedController:

$ionicModal.fromTemplateUrl('templates/views/view.html', { 
    scope: $scope, 
    animation: 'slide-in-up' 
}).then(function(modal) { 
    $scope.modal = modal; 
}); 

$scope.modal.show().then(function() { 
    // Blah 
}); 

Meine Config wie folgt aussieht:

$stateProvider 
    .state('login', { 
    url: '/login', 
    templateUrl: 'templates/login.html', 
    controller: 'LoginController', 
    resolve: { 
     'currentAuth': function(Auth) { 
     return Auth.checkAuth().$waitForAuth(); 
     }, 
     'clearCache': function($ionicHistory) { 
     return $ionicHistory.clearCache(); 
     } 
    } 
    }) 
    .state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/main.html', 
    controller: 'SideMenuController', 
    resolve: { 
     'currentAuth': function(Auth) { 
     return Auth.checkAuth().$waitForAuth(); 
     } 
    } 
    }) 
    .state('app.feed', { 
    url: '/feed', 
    views: { 
     'viewContent': { 
     templateUrl: 'templates/views/feed.html', 
     controller: 'FeedController', 
     resolve: { 
      'currentAuth': function(Auth) { 
      return Auth.checkAuth().$requireAuth(); 
      }, 
      'clearCache': function($ionicHistory) { 
      return $ionicHistory.clearCache(); 
      } 
     } 
     } 
    }); 

    $urlRouterProvider.otherwise('/login'); 
}); 

Ich sollte auch erwähnen, die ich für AngularFire Authentifizierung, bevor die staatlichen Lasten zu überprüfen bin Lösung . Im Hören auf $rootScope, um zu sehen, ob es ein $stateChangeError ist, dann ist dieser den Benutzer auf den Login-Bildschirm umleiten würde, aber dies scheint nicht das Problem zu sein, damit die $urlRouterProvider Zeile entfernen:

$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { 
    if (error === 'AUTH_REQUIRED') { 
    $state.go('login'); 
    } 
}); 

ich auch bin Löschen des Cache auf dem FeedController und LoginController lösen. Hat jemand dieses Problem mit $ ionicModals erlebt? Bitte lassen Sie mich wissen, wenn Sie mir helfen können. Dankesehr.

Antwort

1

Ich wollte hier nur für alle anderen, die dies erleben. Ich habe die Lösung herausgefunden. Es wurde durch einen Hash href="#" auf dem <a> Element verursacht, das die Routenänderung verursacht. Ich denke, $urlRouterProvider sieht eine leere Route in diesem Fall?

+0

Vielen Dank! Du hast mich gerade davor bewahrt, meinen Kopf durch eine Wand zu stecken. :) – WonderGrub

1

Ich würde die Funktion in einen try catch-Block umwandeln, es gibt einige zusätzliche Fehlerüberprüfungen, die Sie tun könnten, um mehr Einblick zu geben.

Auch Sie gehen davon aus, dass die $ionicModal.fromTemplateUrl sofort gelöst wird, da Sie einen Anruf an $scope.modal.show() tätigen, ohne zu versichern, dass Sie tatsächlich ein Modal haben.

Verwandte Themen