需要澄清:订阅路由器事件 Aurelia (Typescript)
Clarity needed: subscribing to router events Aurelia (Typescript)
我正在尝试根据提供的 URL 的参数动态更改页面的标题标签。我通过订阅 Aurelia 路由器的 "router:navigation:success"
(或 "complete")事件来做到这一点。
如果页面生命周期从头到尾完成,这工作正常,但是,当 URL 在同一页面上更改(使用 this.router.navigateToRoute
)之前,事件我订阅的内容没有触发,因此标题标签没有更改。
例如:
- 我导航到
/needs/volunteer
。标题是 All Volunteering Opportunities
- 在此页面上,在一组下拉菜单中进行了选择,并使用
this.router.navigateToRoute
将 url 更改为 /needs/volunteer/city-abc
。标题标签仍然显示为 All Volunteering Opportunities
,因为我订阅的事件没有触发。
- 如果我在 URL 栏上按回车键,URL 指向
/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
相关的事件。
解决方案的简单答案是在完成 this.router.navigateToRoute
方法后 emit/publish router:navigation:complete
事件。
我正在尝试根据提供的 URL 的参数动态更改页面的标题标签。我通过订阅 Aurelia 路由器的 "router:navigation:success"
(或 "complete")事件来做到这一点。
如果页面生命周期从头到尾完成,这工作正常,但是,当 URL 在同一页面上更改(使用 this.router.navigateToRoute
)之前,事件我订阅的内容没有触发,因此标题标签没有更改。
例如:
- 我导航到
/needs/volunteer
。标题是All Volunteering Opportunities
- 在此页面上,在一组下拉菜单中进行了选择,并使用
this.router.navigateToRoute
将 url 更改为/needs/volunteer/city-abc
。标题标签仍然显示为All Volunteering Opportunities
,因为我订阅的事件没有触发。 - 如果我在 URL 栏上按回车键,URL 指向
/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
相关的事件。
解决方案的简单答案是在完成 this.router.navigateToRoute
方法后 emit/publish router:navigation:complete
事件。