Aplikacja, nad którą pracuję, ma różne stany (przy użyciu routera ui), gdzie niektóre stany wymagają zalogowania, inne są publicznie dostępne.
Stworzyłem metodę, która prawidłowo sprawdza, czy użytkownik jest zalogowany, a obecnie mam problemy z przekierowywaniem na naszą stronę logowania, gdy jest to konieczne. Należy zauważyć, że strona logowania nie jest obecnie umieszczona w aplikacji AngularJS.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
Konsola.log prawidłowo wyświetla zamierzony adres URL. W następnej linii próbowałem praktycznie wszystkiego, od $ window.open do window.location.href i bez względu na to, co próbowałem, przekierowanie się nie dzieje.
EDYTUJ (ROZWIĄZANE):
Znalazłem problem.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Zmienna landingUrl została ustawiona na „domain.com/login”, co nie działało z $ window.location.href (co było jedną z rzeczy, które wypróbowałem). Jednak po zmianie kodu na
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
teraz działa.
źródło
location
obiektu używając$window.location=...
Odpowiedzi:
Wierzę, że sposobem na to jest
$location.url('/RouteTo/Login');
Edytuj dla przejrzystości
Powiedzmy, że moja trasa w widoku logowania to
/Login
, powiedziałbym, żebym$location.url('/Login')
nawigowała do tej trasy.W przypadku lokalizacji poza aplikacją Angular (tj. Bez zdefiniowanej trasy) będzie działać zwykły stary JavaScript:
window.location = "http://www.my-domain.com/login"
źródło
$window
zamiastwindow
(źródło: stackoverflow.com/questions/28906180/… )Wydaje się, że
$window.location.href
preferowanym sposobem jest przeładowanie całej strony .https://docs.angularjs.org/guide/$location
źródło
To może ci pomóc! próbny
Przykład kodu AngularJs
var app = angular.module('urlApp', []); app.controller('urlCtrl', function ($scope, $log, $window) { $scope.ClickMeToRedirect = function () { var url = "http://" + $window.location.host + "/Account/Login"; $log.log(url); $window.location.href = url; }; });
Przykład kodu HTML
<div ng-app="urlApp"> <div ng-controller="urlCtrl"> Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a> </div> </div>
źródło
Nie wiem z jakiej wersji, ale ja używam 1.3.14 i możesz po prostu użyć:
window.location.href = '/employee/1';
Nie ma potrzeby wstrzykiwania
$location
ani$window
w kontrolerze i nie ma potrzeby pobierania aktualnego adresu hosta.źródło
Musisz włożyć:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
W ten sposób funkcja kątowa może uzyskać dostęp do obiektu „okno”
źródło