需要清晰度:订阅路由器事件Aurelia(Typescript)

时间:2017-06-05 07:43:30

标签: typescript2.0 aurelia-router

我正在尝试根据提供的URL的参数动态更改页面的标题标记。我这样做是通过订阅Aurelia路由器的"router:navigation:success"(或"完成")事件。

如果页面生命周期从头到尾完成,这样可以正常工作,但是,当URL在同一页面上更改时(使用this.router.navigateToRoute)之前它已经打开,我订阅的事件不会触发因此标题标签不会改变。

例如:

  1. 我导航到/needs/volunteer。标题为All Volunteering Opportunities
  2. 在此页面上,系统会在一组下拉菜单中进行选择,并使用this.router.navigateToRoute将网址更改为/needs/volunteer/city-abc。标题标签仍然显示为All Volunteering Opportunities,因为我订阅的事件未触发。
  3. 如果我在网址栏上按Enter键并指向/needs/volunteer/city-abc,则标题标记会显示为Volunteering Opportunities in City ABC。这就是我期望发生的事情。
  4. 有没有办法订阅指向this.router.navigateToRoute的活动?

    我们现在拥有上述功能的原因是,当我们使用URL参数加载页面时,我们会自动将关联的下拉列表设置为所选值。这也允许人们共享URL,从而共享页面内容。

    提前感谢您的帮助。

    编辑:

    我注意到this.router.navigateToRoute存在trigger: false/true的选项。我当前设置为false,然后路由器显示上面描述的功能。

    如果我设置trigger: true,我会得到所需的效果,但是我注意到那时会发生完整的页面重新加载。

    我显然不希望这种情况发生,所以我仍然在考虑如何订阅与this.router.navigateToRoute相关的活动。

1 个答案:

答案 0 :(得分:0)

解决方案的简单答案是在完成router:navigation:complete方法后发出/发布this.router.navigateToRoute事件。