我有代理商列表,想要对每个代理商做些什么。对于"做某事"我有代理列表,嵌套父视图,处理导航和一组子视图,代表导航。
大多数顶级视图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?
答案 0 :(得分:1)
强制路由器配置只需添加到Agent-details viewmodel:
import {activationStrategy} from 'aurelia-router';
...
determineActivationStrategy(){
return activationStrategy.replace;
}