Ember:从 afterModel 获取目标 url
Ember: get target url from afterModel
我有两条路径指向同一条路线:
this.route('items', { path: ':fruitName/rotten' });
this.route('items', { path: ':fruitName' });
我正在尝试从 /items/fruitName 路由的 afterModel 挂钩中获取当前 URL。如果我使用 this.get('router.url'),它会在转换前给我之前的 URL。我需要检测目标是否在路径末尾有 'rotten'。
我发现 transition.intent.url 具有字符串形式的路径,但只有在手动输入浏览器时才会出现。如果我点击 link 进行转换,transition.intent.url 是未定义的。
如何确定转换 URL 是 /items/fruitName/ 还是 /items/FruitName/rotten?
你可以为此使用 queryParams 吗?所以你的 URL 看起来像这样:
items/tomato?rotten=false
或者你可能想要更通用的东西:
items/tomato?state=rotten
路由和控制器的设置类似于可在此处找到的内容:https://guides.emberjs.com/v2.14.0/routing/query-params/
在确定您有哪个 url 之前,我的问题是:如何使用不同的 url 过渡到相同的路线(通过使用 {{link-to}}
)?
在你的情况下,你有相同的路线用于 2 个不同的目的,我理解你想要完成什么,但你会违反 ember 规则(这迫使你做出糟糕的设计)。
您可以使用嵌套路由来完成您想做的事情。让我解释一下:
/:fruitName
和/:fruitName/rotten
有相同的基础(相同的数据):一个水果的页面但是在烂路线中,你想在另一个标签中显示。
这是一个设计问题而不是路由问题,你可以充分利用嵌套路由到:
- 使用索引显示主要内容
- 显示其他内容的子路径
您可以使用基本的 css 选项卡查看 example here。
我有两条路径指向同一条路线:
this.route('items', { path: ':fruitName/rotten' });
this.route('items', { path: ':fruitName' });
我正在尝试从 /items/fruitName 路由的 afterModel 挂钩中获取当前 URL。如果我使用 this.get('router.url'),它会在转换前给我之前的 URL。我需要检测目标是否在路径末尾有 'rotten'。
我发现 transition.intent.url 具有字符串形式的路径,但只有在手动输入浏览器时才会出现。如果我点击 link 进行转换,transition.intent.url 是未定义的。
如何确定转换 URL 是 /items/fruitName/ 还是 /items/FruitName/rotten?
你可以为此使用 queryParams 吗?所以你的 URL 看起来像这样:
items/tomato?rotten=false
或者你可能想要更通用的东西:
items/tomato?state=rotten
路由和控制器的设置类似于可在此处找到的内容:https://guides.emberjs.com/v2.14.0/routing/query-params/
在确定您有哪个 url 之前,我的问题是:如何使用不同的 url 过渡到相同的路线(通过使用 {{link-to}}
)?
在你的情况下,你有相同的路线用于 2 个不同的目的,我理解你想要完成什么,但你会违反 ember 规则(这迫使你做出糟糕的设计)。
您可以使用嵌套路由来完成您想做的事情。让我解释一下:
/:fruitName
和/:fruitName/rotten
有相同的基础(相同的数据):一个水果的页面但是在烂路线中,你想在另一个标签中显示。
这是一个设计问题而不是路由问题,你可以充分利用嵌套路由到:
- 使用索引显示主要内容
- 显示其他内容的子路径
您可以使用基本的 css 选项卡查看 example here。