Приложение, над которым я работаю, содержит различные состояния (с использованием ui-router), где некоторые состояния требуют, чтобы вы вошли в систему, другие общедоступны.
Я создал метод, который корректно проверяет, вошел ли пользователь в систему, и в настоящее время у меня возникают проблемы с перенаправлением на нашу страницу входа в систему, когда это необходимо. Следует отметить, что страница входа в настоящее время не находится в приложении 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;
теперь это работает.
источник
location
объект, используя$window.location=...
Ответы:
Я считаю, что способ сделать это
$location.url('/RouteTo/Login');
Редактировать для ясности
Скажем, мой маршрут для моего представления входа был
/Login
, я бы сказал,$location.url('/Login')
перейти к этому маршруту.Для местоположений за пределами приложения Angular (т. Е. Без определения маршрута) будет использоваться простой старый JavaScript:
window.location = "http://www.my-domain.com/login"
источник
$window
вместоwindow
(источник: stackoverflow.com/questions/28906180/… )Кажется, что для полной перезагрузки страницы
$window.location.href
предпочтительнее.https://docs.angularjs.org/guide/$location
источник
Это может вам помочь! демо
Образец кода 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; }; });
HTML-код-образец
<div ng-app="urlApp"> <div ng-controller="urlCtrl"> Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a> </div> </div>
источник
Не уверен, с какой версии, но я использую 1.3.14, и вы можете просто использовать:
window.location.href = '/employee/1';
Нет необходимости вводить
$location
или$window
в контроллер, и нет необходимости получать текущий адрес хоста.источник
Вы должны поставить:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
Таким образом, угловая функция может получить доступ к объекту "окно"
источник