我定義的路由配置的參數化路線的多個實例:設置標題
{ 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之間共享。 –