J'écris une application en utilisant Aurelia JS . Comment puis-je rediriger vers une autre URL? Existe-t-il un moyen de le faire sans créer un tout nouveau étape du pipeline de navigation ?
Merci
pour ce faire, injectez le routeur dans le ViewModel et utilisez la méthode naviguer (route)
voici un exemple:
import {Router} from 'aurelia-router';
export class MyVM {
static inject() { return [Router]; }
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
Je pensais juste mettre un peu à jour l'excellente réponse de @Daniel Camarda. Depuis février 2016, vous pouvez utiliser le décorateur inject
d'Aurelia. De plus, le problème de nommage router
a été résolu.
import {inject} from 'aurelia-framework';
import {Router} from 'aurelia-router';
@inject(Router)
export class MyVM {
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
Petit info rapide: le problème de dénomination avec "routeur" est quelque chose que nous suivons ici: https://github.com/aurelia/router/issues/34 Si vous lisez cette réponse plus tard, et ce problème a été résolu, vous devriez pouvoir nommer votre propriété en toute sécurité "routeur" si vous le souhaitez.
Peut-être un cas d'utilisation légèrement différent, mais publication car il est tellement similaire: Lors de la saisie d'une vue, basé sur par exemple paramètres, je veux rediriger vers une autre vue. Cela doit se produire dans activate()
ou canActivate()
.
Dans ce cas, les fonctions naviguer () et naviguerTouteRoute () suggérées ci-dessus ne fonctionnent pas.
Ce qui fonctionne cependant, c'est return new Redirect('....')
où la redirection est importée depuis aurelia-router, comme ceci:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}