【问题标题】:Clarity needed: subscribing to router events Aurelia (Typescript)需要明确:订阅路由器事件 Aurelia (Typescript)
【发布时间】:2017-06-06 19:16:31
【问题描述】:

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

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

例如:

  1. 我导航到/needs/volunteer。标题为All Volunteering Opportunities
  2. 在此页面上,在一组下拉列表中进行选择,并使用 this.router.navigateToRoute 将 URL 更改为 /needs/volunteer/city-abc。由于我订阅的事件没有触发,因此标题标签仍显示为 All Volunteering Opportunities
  3. 如果我在 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 相关的事件。

【问题讨论】:

    标签: typescript2.0 aurelia


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2021-07-09
      • 2020-12-07
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多