【问题标题】:Redirecting to routes defined outside current scope in aurelia重定向到 aurelia 中当前范围之外定义的路由
【发布时间】:2015-11-06 18:45:56
【问题描述】:

我在我的项目中遇到了一种情况,我需要构建一条通往当前范围之外定义的路线的路线。假设我有以下路由设置

/
/cars
/cars/buy
/cars/sell
/bikes
/bikes/buy
/bikes/sell

现在,在我的默认路由上,我定义了 3 条路线 /、/cars 和 /bikes。当 /cars 被激活时,我将 /sell 和 /buy 附加到当前路线定义中。现在,当用户在 /cars/buy 内时,我想添加一个链接,例如“您更喜欢购买自行车吗?”并链接到 /bikes/buy。

买入/卖出之间的切换由

完成
router.navigateToRoute('buy');

router.navigateToRoute('sell');

在相应的视图模板中。

所以我有点想找一些可以让我做的事情

router.navigateToRoute('bikes);
router.navigateToRoute('buy');

一步到位。

【问题讨论】:

  • 你不能给路线起个名字吗?自行车/购买路线可以有一个名为“buyBikes”的名称,然后您可以导航到该名称,例如 router.navigateToRoute('buyBikes); (ps要给路由命名,只需在设置路由时添加一个名称属性)
  • 问题是自行车的购买路线直到 /bikes 路线被激活后才会被宣布。所以从技术上讲,这条路线还不存在。
  • 你可以在 app.js 中声明路由吗?
  • 当然,但这会破坏使用子路由器的目的,因为我希望在我的项目中使用子路由器,因为路由层次很深。
  • 是的。我自己也想知道这一点。如果你能解决这个问题,我很想知道它是如何完成的。 gitter 频道也非常适合提问,可能值得在那里提问。

标签: aurelia


【解决方案1】:

您可以使用

直接导航到路由路径(而不是路由名称)
router.navigate('route/href');

即使子路由尚未注册,这也会起作用(路由器足够聪明,可以路由到子路由并等待它进一步配置路由器,然后再继续)

你的情况

router.navigate('bikes/buy');

来自cars/buy 应该可以正常工作

【讨论】:

  • 工作就像一个魅力:) 谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
相关资源
最近更新 更多