Ember.js 重新设置路由中的查询参数
我有一个控制器查询参数:Ember.js 重新设置路由中的查询参数,ember.js,Ember.js,我有一个控制器查询参数: export default Controller.extend({ myParam: undefined, queryParams: ['myParam'], }); 我想用以下内容刷新模型: export default Route.extend({ queryParams: { myParam: { refreshModel: true } } }); 这将正确格式化并跟踪
export default Controller.extend({
myParam: undefined,
queryParams: ['myParam'],
});
我想用以下内容刷新模型:
export default Route.extend({
queryParams: {
myParam: {
refreshModel: true
}
}
});
这将正确格式化并跟踪我的应用程序URL(换句话说,浏览器URL)中的变量:
并将相应的请求正确发送到我的API:
[GET] myapi.com?myParam=1
我想重新映射查询参数,以便可以继续在控制器中使用myParam
变量,但对我的API的请求被映射到:
[GET] myapi.com?my_param=1
我在控制器上尝试了以下操作:
当我更改变量时,这会使我的应用程序中的URL(浏览器URL)正确更改为my_param
:
myapp.com?my_param=1
但它不会更改发送到我的API的参数,它仍然是:
[GET] myapi.com?myParam=1
是否需要将刷新路径中模型的变量映射到其他URl参数
编辑
我注意到routequeryParams
变量可以有一个as
属性:
export default Route.extend({
queryParams: {
myParam: {
refreshModel: true,
as: 'my_param'
}
}
});
但设置似乎也有同样的效果-它会更改应用程序URL,但不会更改api URL。好的,快速脏的解决方案是将此添加到路由:
model(params) {
if ('myParam' in params) {
params['my_param'] = params['myParam'];
delete params['myParam'];
}
return this._super(...arguments);
}
但必须有一种更干净的方法来做到这一点
有什么内在的方法可以做到这一点吗 通常我是这样做的:
然后可以在模板中使用myParam
。URL和model
回调将使用my_param
export default Route.extend({
queryParams: {
myParam: {
refreshModel: true,
as: 'my_param'
}
}
});
model(params) {
if ('myParam' in params) {
params['my_param'] = params['myParam'];
delete params['myParam'];
}
return this._super(...arguments);
}
//controller
import { alias } from '@ember/object/computed';
....
queryParams: ['my_param'],
myParam: alias('my_param')
//route
model({ my_param }) {
}