2016-08-10 90 views
3

我创造aureliajs框架自定义组件,它注入一个Router实例:如何获得路线参数奥里利亚自定义组件

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

它将与列表视图模式,以用来设置一些基本分页。因此,我需要从活动路径中读取当前页码(看起来像:orders/:pageNum。我不知道该怎么做?我的意思是 - 我知道它应该放在Pagination附加的方法中,但是如何获得?这个:pageNum PARAM

回答

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

嗯,你可以做到,但你的组件有2个责任。如果您更改处理活动页面的方式,则必须更改屏幕组件和页面组件。如果将页码绑定到页面组件,则无论您如何处理活动页面,该组件都将始终具有正确的值 –

1

您可以使用router.currentInstruction.paramsrouter.currentInstruction.queryParams

您也可以观察到路由器时得到通知的路由变化:

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

    console.log(currentInstruction); 

}); 
+0

router.currentInstruction在我的情况下始终为空 – chdev77