segundos redireccionar pagina otra despues con boton javascript angularjs redirect angular-ui-router

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.

https://docs.angularjs.org/guide/$location


Tienes que poner:

< html ng-app = "urlApp" ng-controller = "urlCtrl">

De esta forma, la función angular puede acceder al objeto "ventana"