web-dev-qa-db-fra.com

Redirection en utilisant AngularJS

J'essaie de rediriger vers un autre itinéraire en utilisant:

$location.path("/route");

Mais pour une raison quelconque, cela ne fonctionne pas. J'ai créé un widget à saisie automatique à l'aide de jQuery-UI et j'appelle une fonction à partir de la portée une fois que l'utilisateur a sélectionné une option. Je l'ai débogué et il entre dans la fonction mais il n'est jamais redirigé vers l'autre route. Cela ne change l'itinéraire que lorsque j'appuie sur une touche.

Je pense que c'est un peu étrange mais je n'ai pas trouvé comment résoudre ce problème. j'ai utilisé

window.location = "#/route";

et cela fonctionne mais je veux utiliser la fonction path().

Quelqu'un at-il une idée de la raison pour laquelle cela se produit?

87
Tomarto

Avec un exemple de code qui ne fonctionne pas, il sera facile de répondre à cette question, mais avec cette information, le mieux que je puisse penser est que vous appelez le $ location.path en dehors du résumé AngularJS.

Essayez ceci avec la directive scope.$apply(function() { $location.path("/route"); });

109

N'oubliez pas d'injecter $location dans le contrôleur.

82
Stepan Suvorov

En supposant que vous n'utilisiez pas le routage html5, essayez $location.path("route"). Cela redirigera votre navigateur vers #/route qui pourrait être ce que vous voulez.

20
dpactri

Si vous avez besoin de rediriger votre application angular, utilisez $window.location. C'était mon cas. j'espère que quelqu'un le trouvera utile.

14
Raulucco

Vérifiez votre méthode de routage:

si votre état de routage est comme ça

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

alors vous devriez utiliser

$location.path("/app/register");
2
jfindley

Il est difficile de dire sans connaître votre code. Ma meilleure hypothèse est que l'événement onchange ne se déclenche pas lorsque vous modifiez la valeur de votre zone de texte à partir du code JavaScript.

Il y a deux façons pour que cela fonctionne; la première consiste à appeler vous-même onchange, et la seconde consiste à attendre que la zone de texte ne se concentre plus.

Vérifiez cette question ; même question, cadre différent.

0
Milan Jaric