如何在aurelia自定义组件中获取路由参数

时间:2016-08-10 16:30:58

标签: javascript aurelia aurelia-router

我正在aureliajs框架中创建一个自定义组件并将其注入{ "accounts" : { "-KOjv0LDdoWrc3uApvPi" : { "dateCreated" : "Tue Aug 09 2016 11:29:18 GMT-0400 (EDT)", "email" : "sdgsdgsd@tbteam.net", "provider" : "Facebook", "userId" : "FMXlUQZth5aehQLT2TKZZJZdJBh2" }, "-KOkwpzslw9NyUrTtvA7" : { "dateCreated" : "Tue Aug 09 2016 16:16:52 GMT-0400 (EDT)", "displayDescription" : "no description", "email" : "sdgsdsddgd@yahoo.com", "provider" : "Facebook", "userId" : "F9Z7YhSlmAQqOH5FVjBSV2CkYZG3" } } } 实例:

Router

它将与列表视图模型一起使用,以便设置一些基本的分页。因此,我需要从活动路径中读取当前页码(看起来像@inject(Router) export class Pagination { constructor(router) { this.router = router; } } 。我不确定该怎么做?我的意思是 - 我知道它应该放在{{1}中附加方法,但是如何到达这个orders/:pageNum param?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

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

您还可以观察路由更改时要通知的路由器:

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

  console.log(currentInstruction);

});