web-dev-qa-db-fra.com

Comment puis-je rediriger vers un autre modèle de vue dans Aurelia JS?

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

34
Sunjay Varma

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");
  }
}
46
Daniel Camarda

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");
  }
}
18
jeff-h

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.

17
EisenbergEffect

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')
}
6
specimen