Aurelia 如何将路由参数作为可绑定值传递给组件';视图模型(非视图)

Aurelia 如何将路由参数作为可绑定值传递给组件';视图模型(非视图),aurelia,bindable,Aurelia,Bindable,我使用了路线导航,通过激活访问路线参数 app.ts export class App { configureRouter(config) { config.map([ { route: 'student/:id', name: 'student', moduleId: 'student', nav: true, title: 'student', href: '#' } ]); } } student.ts export class Student {

我使用了路线导航,通过激活访问路线参数

app.ts

export class App {
   configureRouter(config) {
    config.map([
        { route: 'student/:id', name: 'student', moduleId: 'student',  nav: true, title: 'student', href: '#' }
    ]);
}
}

student.ts

export class Student {
    id;

activate(params) {
    this.id = params.id;
   }
}
    export class Grade{
      @bindable id;
        constructor() {
          console.log("id=", this.id};
 }
它路由到的页面是使用几个需要传递此参数的组件构建的

<template>
    <require from="grade" > </require>
    <h1> Student - ${id} </h1>
    <grade id.bind="id"></grade>
    <department id.bind="id"></department>
<template>

显示为未定义。我试图通过激活访问它,就像我在student中所做的那样,但当页面加载时,模板似乎没有被激活。我认为问题不在于路由,而在于如何访问viewmodel中的可绑定值。我也尝试了一次性和双向绑定模式,它们给出了相同的结果

它未定义的原因是您正在
构造函数中调用它。可绑定变量填写在附加的
阶段

如果您尝试使用以下附加方法调用它:

attached() {
   console.log("id=" + this.id);
 }
它应该被填满


有关Aurelia组件生命周期的详细信息,请单击

它也应在绑定()阶段可用,该阶段发生在附加()之前。