Додаток, над яким я працюю, містить різні стани (за допомогою ui-маршрутизатора), де деякі штати вимагають входу в систему, інші є загальнодоступними.
Я створив метод, який достовірно перевіряє, чи зареєстрований користувач, і те, з чим я зараз маю проблеми, насправді перенаправляє на нашу сторінку входу, коли це необхідно. Слід зазначити, що наразі сторінка входу не розміщується в програмі 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");
}
});
});
Console.log правильно відображає призначену URL-адресу. У рядку після цього я спробував практично все, починаючи від $ window.open до window.location.href, і незалежно від того, що я намагався, перенаправлення не відбувається.
РЕДАГУВАТИ (ВИРІШЕНО):
Знайшов проблему.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Для змінної landingUrl було встановлено значення 'domain.com/login', що не працюватиме з $ window.location.href (що було однією з речей, які я намагався). Однак після зміни коду на
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
зараз це працює.