L'application sur laquelle je travaille contient différents états (en utilisant ui-router), où certains états exigent que vous soyez connecté, d'autres sont accessibles au public.
J'ai créé une méthode qui vérifie valablement si un utilisateur est connecté, ce avec quoi je rencontre actuellement des problèmes est de rediriger vers notre page de connexion si nécessaire. Il convient de noter que la page de connexion n'est actuellement pas placée dans l'application 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");
}
});
});
Le console.log affiche correctement l'URL prévue. La ligne suivante, j'ai essayé pratiquement tout, de $ window.open à window.location.href et peu importe ce que j'ai essayé, aucune redirection ne se produit.
MODIFIER (RÉSOLU):
J'ai trouvé le problème.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
La variable landingUrl était définie sur «domain.com/login», ce qui ne fonctionnait pas avec $ window.location.href (qui était l'une des choses que j'ai essayées). Cependant, après avoir changé le code en
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
cela fonctionne maintenant.
la source
location
objet natif en utilisant$window.location=...
Réponses:
Je crois que la façon de faire est
$location.url('/RouteTo/Login');
Modifier pour plus de clarté
Disons que mon itinéraire pour ma vue de connexion était
/Login
, je dirais$location.url('/Login')
de naviguer vers cet itinéraire.Pour les emplacements en dehors de l'application Angular (c'est-à-dire sans itinéraire défini), l'ancien JavaScript servira:
la source
$window
place dewindow
(source: stackoverflow.com/questions/28906180/… )Il semble que le rechargement d'une page complète
$window.location.href
soit le moyen préféré.https://docs.angularjs.org/guide/$location
la source
Cela pourrait vous aider! démo
Exemple de code AngularJs
Exemple de code HTML
la source
Je ne sais pas de quelle version, mais j'utilise 1.3.14 et vous pouvez simplement utiliser:
Pas besoin d'injecter
$location
ou$window
dans le contrôleur et pas besoin d'obtenir l'adresse actuelle de l'hôte.la source
Vous devez mettre:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
De cette façon, la fonction angulaire peut accéder à l'objet "fenêtre"
la source