2016-08-10 57 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