2016-08-31 12 views
7

Chcę zaktualizować parametry adresu URL w pasku adresu bez routingu. Ale nie jestem pewien, jak to zrobić z Aurelia-router z widoku modelu.Aurelia-Router: Zmodyfikuj parametry trasy i pasek adresu z maszyny wirtualnej za pomocą routera

W moim przypadku wysyłam identyfikatory w adresie URL, który jest pobierany przez metodę aktywującą widok modelu.

Trasa wygląda następująco: http://localhost:3000/#/test/products?0=2599037842&1=2599080552

Następnie chcę, aby móc usunąć identyfikatory z url bez reaktywacji widok model, wynik url exemple: http://localhost:3000/#/test/products?0=2599037842

Mam nadzieję, że nie jest obsługa tego w Aurelia-router

Dzięki! /Mike

Odpowiedz

16

Tak, można to zrobić za pomocą metody router.navigateToRoute(). navigateToRoute ma dodatkowe parametry. Użyj parametru options (trzeci), aby zmodyfikować sposób nawigacji.

przykład:

import {inject} from 'aurelia-framework'; 
import {Router} from 'aurelia-router'; 

@inject(Router) 
export class Products { 
    constructor(router) { 
     this.router = router; 
    } 

    activate(params) { 
     // TODO: Check your params here and do navigate according to values 

     this.router.navigateToRoute(
      this.router.currentInstruction.config.name, // current route name 
      { '0': params['0'] }, // route parameters object 
      { trigger: false, replace: true } // options 
     ); 
    } 
} 

Z documentation hub:

navigateToRoute(route: string, params?: any, options?: any): boolean

Przejście w nowym miejscu odpowiadającym określonej trasy i params.

Params

  • route: string - Nazwa trasy do wykorzystania podczas generowania lokalizację nawigacji.
  • params?: any - Parametry trasy, które będą używane przy wypełnianiu wzorca trasy.
  • options?: any - Opcje nawigacji.

Z options kontrolować jak wygląda history is updated.

  • trigger: false - zapobiega rurociąg Router nawigacja być wyzwalany
  • replace: true - zastępuje bieżący adres URL w historii z przewidzianej trasie (przepisywanie historii), więc nie zostanie wyzwolony z przeglądarki tylnej funkcjonalności
+0

Działa świetnie - Dzięki! Jednym z udoskonaleń, które znalazłem, było zastąpienie ciągu "products" przez "this.router.currentInstruction.config.name", aby programowo pobrać bieżącą nazwę trasy. Możesz dodać tę modyfikację do swojej odpowiedzi. :) – Mike

+0

Świetnie. Oczywiście, to zadziała, jeśli musisz nawigować do aktualnej trasy. Odpowiedź zmodyfikowana. –

Powiązane problemy