2016-06-10 10 views
1

Ich habe zwei Controller auf der gleichen Seite, einen für Login-Controller und den anderen Controller. Der erste Controller ist an den Pfad "/" und der zweite an den Pfad "/ mypath" gebunden. Wenn der Benutzer nicht angemeldet ist, kann er nicht auf diesen zugreifen. Er kann sich über den ersten Controller einloggen.
Das Problem besteht darin, dass die Seite bei der Anmeldung des Benutzers zum Pfad "/" weitergeleitet wird. Wie kann man das verhindern? Ich möchte, dass die Seite auf dem aktuellen Pfad bleibt. Das habe ich ausprobiert. Die $locationChangeStart Veranstaltung:Angular JS Redirect nach dem Login

mstdapp.run(["$rootScope", function($rootScope){ 
    $rootScope.$on("$locationChangeStart", function(event, newUrl, oldUrl){ 
     $rootScope.returnUrl = newUrl; 
     console.log("new url in run is :"); 
     console.log(newUrl);   
    }); 
}]); 

Dann im Login-Controller:

$scope.login = function(){   
      authService.Authenticate($scope.user) 
      .then(function(res){     
       $scope.user.displayname = res.data.name; 
       $scope.isLoggedIn = authService.isAuthenticated();    
       console.log($rootScope.returnUrl); 
      }, function(res){ 
       alert(res.data.error_description); 
       console.log($rootScope.returnUrl); 
      });   

}; 

Die $rootScope.returnUrl verweist auf den "/" Pfad.

+0

was hast du bisher versucht? –

+0

Ich habe '$ locationChangeStart' versucht, die aktuelle URL zu erfassen und das' $ rootScope' an den Login-Controller zu übergeben. Dann, nach erfolgreichem Login, habe ich dann '$ location.path (previousURL)' zum zweiten Controller. Aber es funktioniert nicht wie erwartet. –

+0

können Sie es jsfiidle es? –

Antwort

0

Die Antwort gefunden. Das liegt daran, dass der Login-Button eigentlich ein <a> mit href="#" ist. Aus diesem Grund wird die Seite zum Root-Pfad umgeleitet. Das Entfernen der href löst mein Problem.