2016-08-10 2 views
3

Я создаю пользовательский компонент в aureliajs рамок и инъекционный ему Router экземпляра:Как получить параметры маршрута в Aurelia пользовательского компоненте

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

Он будет использоваться список View-модель для того, чтобы настроить какое-то базовая разбивка на страницы. Поэтому мне нужно прочитать текущий номер страницы с активного маршрута (это будет выглядеть так: orders/:pageNum.Я не уверен, как это сделать? Я имею в виду - я знаю, что он, вероятно, должен быть помещен в Pagination приложенном методе, но как получить ? к этим :pageNum парам

ответ

3

Создать связываемое свойство в пользовательском элементе Возьмите номер страницы из активного маршрута и привязать его к пользовательскому элементу, например:..

import { bindable } from 'aurelia-framework'; 

@inject(Router) 
export class Pagination { 

    @bindable page; 

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

Использование:

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

Чтобы получить номер страницы в активном маршруте, используйте activate() крюк:

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

Я предпочел бы сделать это так, что только мой пользовательский элемент знает, какой номер страницы активной страницы, так что без привязки его , –

+0

Ну, вы могли бы это сделать, но у вашего компонента было бы две обязанности. Если вы измените способ обработки активных страниц, вам придется изменить компонент экрана и компонент страницы. Если вы привязываете номер страницы к компоненту страницы, независимо от того, как вы обрабатываете активные страницы, компонент всегда будет иметь правильное значение –

1

Вы можете использовать router.currentInstruction.params и router.currentInstruction.queryParams.

Вы также можете наблюдать маршрутизатор, чтобы получать уведомления при изменении маршрута:

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

    console.log(currentInstruction); 

}); 
+0

router.currentInstruction всегда имеет значение null в моем случае – chdev77

Смежные вопросы