2016-08-10 2 views
3

Ich bin eine benutzerdefinierte Komponente in aureliajs Rahmen zu schaffen und eine Router Instanz Injektion:Wie Routenparameter in aurelia benutzerdefinierte Komponente erhalten

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

Es wird einige mit Listenansicht-Modelle, um die Einrichtung verwendet werden einfache Paginierung. Daher muss ich die aktuelle Seitennummer von einer aktiven Route lesen (das würde wie folgt aussehen: orders/:pageNum. Ich bin mir nicht sicher, wie es geht? Ich meine - ich weiß, es sollte wahrscheinlich in Pagination angeschlossene Methode platziert werden, aber wie zu bekommen erstellen sie zu diesem :pageNum param

Antwort

3

eine bindbare Eigenschaft in Ihrem benutzerdefinierten Element Nehmen sie die Seitenzahl aus der aktiven Route und binden sie es an das benutzerdefinierte Element zum Beispiel:..

import { bindable } from 'aurelia-framework'; 

@inject(Router) 
export class Pagination { 

    @bindable page; 

    constructor(router) { 
     this.router = router; 
    } 
} 

Verbrauch:

<pagination page.bind="page"></pagination> 

Um die Seitennummer in der aktiven Route zu erhalten, verwenden Sie die activate() Haken:

activate(params) { 
    this.page = params.pageNum; 
} 
+0

würde ich es eher die Art und Weise, dass mein benutzerdefiniertes Element nur weiß, welche Seitennummer die aktive Seite ist, so dass es ohne Bindung . –

+0

Nun, Sie könnten es tun, aber Ihre Komponente hätte zwei Verantwortlichkeiten. Wenn Sie die Handhabung aktiver Seiten ändern, müssten Sie die Bildschirmkomponente und die Seitenkomponente ändern. Wenn Sie die Seitennummer an die Seitenkomponente binden, hat die Komponente immer den richtigen Wert, unabhängig davon, wie Sie mit aktiven Seiten umgehen. –

1

Sie router.currentInstruction.params und router.currentInstruction.queryParams verwenden können.

Sie auch den Router benachrichtigt werden beobachten können, wenn die Routenänderungen:

let sub = this.bindingEngine.propertyObserver(
    this.router, 'currentInstruction').subscribe(currentInstruction => { 

    console.log(currentInstruction); 

}); 
+0

router.currentInstruction ist in meinem Fall immer null – chdev77

Verwandte Themen