我定义的路由配置的参数化路线的多个实例:设置标题
{ route: 'page/:id', name: 'page', moduleId: 'page', title: "Page #" }
我也得到了另一个组件听router:navigation:complete
事件(EventAggregator),而且,当不同的片段发现它将它添加到数组并将其显示在屏幕上(作为一种历史列表)使用NavigationInstruction.config.navModel.title
当我使用不同的ID时间导航到'页面'组件时,例如#/page/1
,#/page/2
,#/page/3
。我从activate()
方法呼叫NavigationInstruction.config.navModel.setTitle("Page " + id)
。
在我的历史,我最初看到:
"Page 1"`
...然后导航到#/page/2
时...
"Page 2"
"Page 2"
...然后导航到#/page/3
时...
"Page 3"
"Page 3"
"Page 3"
因为RouteConfig
是在不同的NavigationInstructions
,更改navModel.title
值会影响从RouteConfig
派生的所有NavigationInstructions
。
任何人都有任何想法如何为页面组件的每个实例设置自定义标题? Aurelia预计会处理同一组件的多个同时实例吗?
我考虑过使用新的router.transformTitle
钩子,但是因为我最终可能在标题中包含更多信息,例如, "Page 1: Contents"
,"Page 2: The First Chapter"
,这感觉是次优的,并且可能让我做了很多滚动我自己的体系结构来动态地解析字符串。
是否有可能订阅不同虚拟机中的事件聚合器,但在离开时忘记取消订阅? –
不,我订阅路由器的VM:navigation:complete在应用程序的整个生命周期内都是持久的。因此,这不是一个多路呼叫问题,只是路由器从一个RouteConfig对象获取标题,该对象在所有针对它生成的NavigationInstructions之间共享。 –