如何在 Ember js 中不刷新路由器的情况下从 URL 中删除查询参数
How to remove a query parameter from URL without refresh the router in Ember js
我有一个基于 Ember.js 构建的网站。用户可以通过 URL http://..../view?showTitle=true. However I don't want to explicitly expose the parameter showTitle=true to the user (meaning user will only see http://..../view) 访问页面。此 URL 是自动生成的并用作重定向目标 URL。所以,我必须在页面加载之前的某个地方手动删除它。但是我仍然需要这个查询参数的这个值来查询数据。有没有办法实现这一目标(一个例子会很棒)?不刷新路由器怎么办?
实际上,您的场景示例会更好:)
还有一些其他方法可以在转换到路线时存储数据。例如:将参数存储在 transition
对象中或将值存储在服务中。创建重定向路由,使用 beforeModel
钩子从查询参数中获取值,然后重定向到真实路由。
一个有效的例子是:ember-twiddle-1
顺便说一下,即使您没有在您的路线中描述您的 queryParams
,您也可以通过 transition.queryParams
访问它们。这似乎有点老套。但它有效:ember-twiddle-2(注意:它在同一条路线上不起作用。)
更新:
在 setupController
挂钩处,您可以覆盖控制器参数。因此,您可以从 url 中删除参数。 ember-twiddle-3
我有一个基于 Ember.js 构建的网站。用户可以通过 URL http://..../view?showTitle=true. However I don't want to explicitly expose the parameter showTitle=true to the user (meaning user will only see http://..../view) 访问页面。此 URL 是自动生成的并用作重定向目标 URL。所以,我必须在页面加载之前的某个地方手动删除它。但是我仍然需要这个查询参数的这个值来查询数据。有没有办法实现这一目标(一个例子会很棒)?不刷新路由器怎么办?
实际上,您的场景示例会更好:)
还有一些其他方法可以在转换到路线时存储数据。例如:将参数存储在 transition
对象中或将值存储在服务中。创建重定向路由,使用 beforeModel
钩子从查询参数中获取值,然后重定向到真实路由。
一个有效的例子是:ember-twiddle-1
顺便说一下,即使您没有在您的路线中描述您的 queryParams
,您也可以通过 transition.queryParams
访问它们。这似乎有点老套。但它有效:ember-twiddle-2(注意:它在同一条路线上不起作用。)
更新:
在 setupController
挂钩处,您可以覆盖控制器参数。因此,您可以从 url 中删除参数。 ember-twiddle-3