1

我使用了路由导航,我从激活访问路由参数。

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;
   }
}

它路由到的页面是使用需要传递此参数的几个组件构建的。

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

在我的成绩视图中,当我在 html 元素中显示它时,它会正确获取 id(在我将其设置为 viewmodel 中的可绑定之后):

grade.html <span>${id}</span>

但是,我无法在等级的视图模型中获得 id,即 grade.ts

    export class Grade{
      @bindable id;
        constructor() {
          console.log("id=", this.id};
 }

出现未定义。我尝试像在学生中一样通过激活来访问它,但看起来模板在页面加载时没有激活。我认为问题不在于路由,而在于通常如何访问视图模型中的可绑定值。我也尝试了一次性和双向绑定模式,它们给出了相同的结果。

4

1 回答 1

2

它未定义的原因是因为您在constructor. 可绑定变量在attached阶段中填充。

如果您尝试在这样的附加方法中调用它:

attached() {
   console.log("id=" + this.id);
 }

它应该被填满。

有关 Aurelia 组件生命周期的更多信息,请单击此处

于 2017-11-21T07:56:19.807 回答