2016-08-31 12 views
7

Adres çubuğundaki URL'leri yönlendirme olmadan güncellemek istiyorum. Ama bunu Aurelia yönlendirici ile bir modelden nasıl yapacağını bilmiyorum.Aurelia-Router: Router ile VM'den rota param ve adres çubuğunu değiştirin

Durumumda, görünüm modelinin etkinleştirme yöntemiyle alınan URL'lere kimlikler gönderiyorum.

rota şuna benzer: http://localhost:3000/#/test/products?0=2599037842&1=2599080552

Sonra url kimlikleri kaldırmak isterler görünümü-modeli yeniden aktive etmeden, url sonucu exemple: http://localhost:3000/#/test/products?0=2599037842

Umarım orada Aurelia-Router için bu desteği destekle

Teşekkürler! /Mike

cevap

16

Evet, bunu router.navigateToRoute() yöntemiyle yapabilirsiniz. navigateToRoute ek parametrelere sahiptir. Navigasyonun nasıl yapıldığını değiştirmek için options (üçüncü) parametresini kullanın.

Örnek:

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 
     ); 
    } 
} 

documentation hub kaynaktan: Belirli bir rota ve parametreler tekabül eden yeni bir konuma

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

dolaşır.

Parametreler

  • route: string

    - navigasyon konumunu oluştururken rotanın adı kullanmak.
  • params?: any - Rota desenini doldururken kullanılacak yol parametreleri.
  • options?: any - Gezinme seçenekleri. options ile

nasıl history is updated kontrol eder.

  • trigger: false - yönlendirici navigasyon boru hattı
  • replace: true tetiklenmesi engeller - bu tarayıcı geri işlevselliği ile tetiklenen olmayacak, böylece sağlanan rota (yeniden yazma tarih) ile tarihte geçerli URL'yi değiştirir
+0

Harika çalışıyor - Teşekkürler! Bulduğum bir gelişme, geçerli rota adını program aracılığıyla almak için 'products'-string'ini this.router.currentInstruction.config.name' ile değiştirmekti. Bu değişikliği cevabınıza ekleyebilirsin. :) – Mike

+0

Harika. Tabii ki, mevcut rotaya gitmeniz gerekiyorsa bu işe yarayacaktır. Cevap değiştirildi. –

İlgili konular