2016-06-10 46 views
1

我在同一頁面上有兩個控制器,一個用於登錄控制器和另一個控制器。第一個控制器綁定到路徑「/」,第二個綁定到路徑「/ mypath」。 如果用戶未登錄,則他無法訪問後者。他可以通過第一個控制器登錄。
問題是,當用戶登錄時,頁面將路由到路徑「/」。如何防止這一點?我希望頁面保持當前路徑。 這是我試過的。所述$locationChangeStart事件:登錄後的角JS重定向

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);   
    }); 
}]); 

然後,在登錄控制器:

$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); 
      });   

}; 

$rootScope.returnUrl指向 「/」 路徑。

+0

到目前爲止您嘗試過什麼? –

+0

我嘗試了'$ locationChangeStart'事件來捕獲當前URL並將'$ rootScope'傳入登錄控制器。然後,在登錄成功之後,我將'$ location.path(previousURL)'傳遞給第二個控制器。但是,它沒有按預期工作。 –

+0

你可以jsfiidle嗎? –

回答

0

找到了答案。這是因爲登錄按鈕實際上是<a>href="#"。這就是頁面被重定向到根路徑的原因。刪除href解決了我的問題。