Comment définir / lire une chaîne de requête lors de l'utilisation du routeur dans aurelia?

Lorsque vous utilisez le routeur de la structure aurelia.io, quelle est la méthode préférée pour lire et définir une chaîne de requête?

Par exemple, dans l'url: http://www.myapp.com/#/myroute1/?s=mystate

Comment lisez-vous et définissez-je ?s=mystate partie de l'url et que le routeur aurelia navigue correctement et n'oublie pas cet état, de sorte que chaque fois que j'arrive dans mon route1 vision route1, je peux lire cette variable d'état et faire quelque chose avec elle?

Sur viewmodel, vous pouvez implémenter la méthode active (params, routeConfig) et les paramètres d'objet doivent contenir vos variables de requête

 activate(params, routeConfig){ console.log(params.s); //should print mystate } 

Pour naviguer vers un itinéraire, vous devez spécifier le nom de cette route dans app.js (nom: 'redirection')

  config.map([ { route: ['','welcome'], moduleId: './welcome', nav: true, title:'Welcome' }, { route: 'flickr', moduleId: './flickr', nav: true, title:'Flickr' }, { route: 'redirect', moduleId: './redirect', name: 'redirect'}, { route: 'child-router', moduleId: './child-router', nav: true, title:'Child Router' } ]); 

Puis utilisez la méthode NavigateToRoute avec les paramètres.

 router.navigateToRoute('redirect', { s:'mystate'}, {replace: true}); 

Si vous souhaitez modifier les queryParams et recharger la page (p. Ex., Modifier le numéro de la page sur le lien de pagination, cliquez) – vous devez utiliser determineActivationStrategy pour replace .

Créez le modèle de vue et ajoutez la fonction determineActivationStrategy :

 import {activationStrategy} from 'aurelia-router'; export class ModelView{ determineActivationStrategy() { return activationStrategy.replace; } } 

Ajouter un événement d'activation à votre modèle pour sauvegarder les paramètres:

 activate(params, routeConfig, navigationInstruction){ this.queryParams = params ? params : {}; } 

Ajouter un code pour recharger ou naviguer avec les mêmes paramètres ou nouveaux:

 moveToNewPage(newPageNumber){ this.queryParams.page = newPageNumber; // change page param to new value this.router.navigateToRoute(this.router.currentInstruction.config.name, this.queryParams); } 

PS pour this.router utilisation de l'utilisation injecter et n'oubliez pas de définir le name du routeur dans la configuration de l'application:

 import {Router} from 'aurelia-router'; export class ModelView{ static inject() { return [Router] }; constructor(router){ this.router = router; } } 

Selon la configuration la plus récente, la chaîne de requête ne sera pas récupérée si vous n'avez pas configuré l'état push.

Définissez l'état push sur true. Et ajouter une balise de base dans index.html.

<base href="http://localhost:9000/"> – index.html

config.options.pushState = true; – app.js -> méthode configureRouter.