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?
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"); });
N'oubliez pas d'injecter $location
dans le contrôleur.
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.
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.
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");
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.