javascript - redireccionar - Usando $ window o $ location para redirigir en AngularJS
redireccionar despues de 5 segundos javascript (5)
La aplicación en la que estoy trabajando contiene varios estados (usando ui-router), donde algunos estados requieren que inicie sesión, otros están disponibles públicamente.
He creado un método que comprueba validamente si un usuario está conectado, con lo que estoy teniendo problemas en realidad está redireccionando a nuestra página de inicio de sesión cuando es necesario. Cabe señalar que la página de inicio de sesión no se encuentra actualmente dentro de la aplicación 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 muestra correctamente la url deseada. Después de eso, he intentado prácticamente todo, desde $ window.open hasta window.location.href y no importa lo que haya intentado, no ocurre ninguna redirección.
EDITAR (RESUELTO):
Encontrado el problema.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
La variable landingUrl se estableció en ''domain.com/login'', que no funcionaría con $ window.location.href (que fue una de las cosas que probé). Sin embargo, después de cambiar el código a
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
ahora funciona
¡Puede ser que te ayude! demo
AngularJs Code-sample
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 Code-sample
<div ng-app="urlApp">
<div ng-controller="urlCtrl">
Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a>
</div>
</div>
Creo que la manera de hacerlo es $location.url(''/RouteTo/Login'');
Editar por claridad
Supongamos que mi ruta para mi vista de inicio de sesión era /Login
, diría $location.url(''/Login'')
para navegar hacia esa ruta.
Para ubicaciones fuera de la aplicación Angular (es decir, no hay una ruta definida), se servirá el antiguo JavaScript simple:
window.location = "http://www.my-domain.com/login"
No estoy seguro de qué versión, pero uso 1.3.14 y solo puede usar:
window.location.href = ''/employee/1'';
No es necesario inyectar $location
o $window
en el controlador y no es necesario obtener la dirección de host actual.
Parece que para la recarga de página completa $window.location.href
es la forma preferida.
No causa una recarga de página completa cuando se cambia la URL del navegador. Para volver a cargar la página después de cambiar la URL, use la API de nivel inferior, $ window.location.href.
Tienes que poner:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
De esta forma, la función angular puede acceder al objeto "ventana"