Ember:从afterModel获取目标网址

时间:2017-07-12 22:28:10

标签: ember.js

我有两条路径指向同一条路线:

this.route('items', { path: ':fruitName/rotten' });
this.route('items', { path: ':fruitName' });

我正在尝试从/ items / fruitName路由的afterModel挂钩中获取当前URL。如果我使用this.get(' router.url'),它会在转换之前给我以前的URL。我需要检测目标是否已经腐烂了#39;在路径的尽头。

我发现transition.intent.url将路径作为字符串,但只有在手动输入浏览器时才会这样。如果我单击转换链接,则transition.intent.url未定义。

如何确定转换网址是/ items / fruitName /或/ items / FruitName / rotten?

2 个答案:

答案 0 :(得分:1)

在确定您拥有哪个网址之前,我的问题是:如何使用不同的网址转换到同一路线(使用{{link-to}})?

在你的情况下,你有两个不同目的的相同路线,我明白你想要完成什么,但你会破坏余烬规则(这会迫使你做出糟糕的设计)。

您可以使用嵌套路线来完成您想要做的事情。让我解释一下:

/:fruitName/:fruitName/rotten具有相同的基础(相同的数据):水果的页面,但在腐烂的路线中,您希望显示在另一个标签中。

这是设计问题而不是路线问题,您可以充分利用嵌套路线:

  • 使用索引显示主要内容
  • subroute显示其他内容

您可以使用基本的css标签查看example here

答案 1 :(得分:0)

您可以使用queryParams吗?所以你的URL看起来像这样:

items/tomato?rotten=false 或者你想要更通用的东西:

items/tomato?state=rotten

路线和控制器的设置类似于以下内容:https://guides.emberjs.com/v2.14.0/routing/query-params/