【问题标题】:Ember router breaks on redirect to '/'Ember 路由器在重定向到“/”时中断
【发布时间】:2019-11-06 09:55:01
【问题描述】:

我很难让我的路由器了解我们在某个页面上,并且它应该在导航中显示为活动状态。情况如下:

 this.route('mainRoute', function() {
     this.route('list');
 });

我们感兴趣的路径是/mainRoute。不幸的是,有很多指向 /mainRoute/list 的旧链接。解决方法是从 /mainRoute/list 组件重定向回 /mainRoute 组件。

beforeModel() {
   this.replaceWith('/mainRoute');
}

现在,我的问题是 /mainRoute 导航链接永远不会被视为活动。我尝试为 /mainRoute 添加路径('/'、'/mainRoute'、'mainRoute'),我尝试将其转换为资源和一堆其他我想到的东西。但它要么不起作用,要么进入无限重定向循环。

对此有什么想法吗?非常感谢,我真的需要一个解决方案!

【问题讨论】:

  • 你为什么用replaceWith()而不是redirect
  • 我不知道原因,不是我的代码
  • IMO 使用 current-whenpathRegex 似乎没有解决问题的根源,而只是在顶部添加另一个脆弱层以隐藏症状。我没有使用replaceWith(),但是使用redirect(),重定向的路由应该在成功转换后变为活动状态,<linkTo> 应该反映这一点。

标签: ember.js routing ember-router


【解决方案1】:

如果 导航链接{{link-to}} 组件。您可以在此处使用 current-when 属性。它接受booleanstring。该字符串是一个空格分隔的值,其中包含您希望此链接在何时处于活动状态的路由名称。

来自文档

如果您需要一个“活动”链接,即使它与当前路由不匹配,您可以使用 current-when 参数。

<LinkTo @route='photoGallery' @current-when='photos'>
  Photo Gallery
</LinkTo>
{{#link-to 'photoGallery' current-when='photos'}}
  Photo Gallery
{{/link-to}}

【讨论】:

  • 非常感谢,这一定会派上用场的。同时我找到了另一个使用 pathRegex 的解决方案:{{#link-to 'photoGallery' pathRegex='^photos'}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2017-04-21
  • 2013-01-20
  • 2019-06-11
  • 1970-01-01
  • 2020-05-09
相关资源
最近更新 更多