我正在尝试根据提供的URL的参数动态更改页面的标题标记。我这样做是通过订阅Aurelia路由器的"router:navigation:success"
(或"完成")事件。
如果页面生命周期从头到尾完成,这样可以正常工作,但是,当URL在同一页面上更改时(使用this.router.navigateToRoute
)之前它已经打开,我订阅的事件不会触发因此标题标签不会改变。
例如:
/needs/volunteer
。标题为All Volunteering Opportunities
this.router.navigateToRoute
将网址更改为/needs/volunteer/city-abc
。标题标签仍然显示为All Volunteering Opportunities
,因为我订阅的事件未触发。/needs/volunteer/city-abc
,则标题标记会显示为Volunteering Opportunities in City ABC
。这就是我期望发生的事情。有没有办法订阅指向this.router.navigateToRoute
的活动?
我们现在拥有上述功能的原因是,当我们使用URL参数加载页面时,我们会自动将关联的下拉列表设置为所选值。这也允许人们共享URL,从而共享页面内容。
提前感谢您的帮助。
编辑:
我注意到this.router.navigateToRoute
存在trigger: false/true
的选项。我当前设置为false,然后路由器显示上面描述的功能。
如果我设置trigger: true
,我会得到所需的效果,但是我注意到那时会发生完整的页面重新加载。
我显然不希望这种情况发生,所以我仍然在考虑如何订阅与this.router.navigateToRoute
相关的活动。
答案 0 :(得分:0)
解决方案的简单答案是在完成router:navigation:complete
方法后发出/发布this.router.navigateToRoute
事件。