重新导航后,视图中的路由器链接无法更新

时间:2016-03-25 15:21:50

标签: aurelia aurelia-router

我有代理商列表,想要对每个代理商做些什么。对于"做某事"我有代理列表,嵌套父视图,处理导航和一组子视图,代表导航。

大多数顶级视图viewmodel:

configureRouter(config: RouterConfiguration, router: Router) {
    config.title = 'Agents';
    config.map([
        { route: '', name: 'dummy', moduleId: 'components/agents-components/dummy', nav: false },
        { route: ':id', name: 'agent', moduleId: 'components/agents-components/agent-details', nav: false }
    ]);

    this.router = router;
}

查看"虚拟"在没有选择代理时显示。

代理商详情视图viewmodel:

configureRouter(config: RouterConfiguration, router: Router) {
    config.title = '';
    config.map([
        { route: 'info', name: 'agent-info', moduleId: 'components/agents-components/agent-info', title: 'Info', nav: true },
        { route: 'add', name: 'agent-add', moduleId: 'components/agents-components/agent-add', title: 'Add', nav: true }
    ]);

    this.router = router;
}

和html:

<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
    <a href.bind="row.href">${row.title}</a>
</li>

网址方案类似于/ agents / 764 / info或/ agents / 764 / add

点击座席#764后,我显示路线&#39;信息&#39;从代理商详细信息视图和使用

activate(params) {
    this.id = params.id;
}

获取代理人的身份证明。到目前为止一切正常,代理详细信息视图中的链接是正确的并且包含当前代理的ID(/ agents / 764 / info和/ agents / 764 / add),我可以选择选项卡&#34;添加&#34;并做点什么。

但是,我点击其他代理,地址栏中的网址变为/ agents / 765 / info,并且在信息激活(params)中我获得了正确的ID。但是,代理详细信息视图的configureRouter没有在html静止/ agents / 764 / info和/ agents / 764 / add中调用和链接。所以当我点击链接&#34;添加&#34;我要添加以前代理的视图。

我该怎么办呢?有没有办法强制重新呈现代理详细信息视图?或者我应该在agent-details activate()中手动修复路由,甚至将html中的链接绑定到手动创建的属性而不是router.navigation?

1 个答案:

答案 0 :(得分:1)

强制路由器配置只需添加到Agent-details viewmodel:

import {activationStrategy} from 'aurelia-router';
...
determineActivationStrategy(){
  return activationStrategy.replace;
}