如何在Ember.Routeclass中修改queryParamsDidChange方法中的查询参数?
How to modify query parameters inside queryParamsDidChange method in Ember.Route class?
思路是当type
参数改变时,我将page
参数值修改为默认值。
我尝试了 this.queryParams.page = 1
但它不起作用。
我也试过 this.paramsFor(this.routeName).page = 1
但还是不行。
我该如何解决这个问题?谢谢。
Ember.Route Class:
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
page: {refreshModel: true},
type: {refreshModel: true}
},
model(params) {
return this.store.query('posts', params);
},
actions: {
queryParamsDidChange(changed, totalPresent, removed) {
this._super(...arguments);
if(changed.type) {
//TODO: Modify the value of page parameter
}
}
}
});
Ember.Controller Class:
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['page', 'type'],
page: 1,
type: null
});
查询参数绑定到控制器属性,如第二个代码块所示。要更改查询参数,您必须更改控制器上的 属性:
queryParamsDidChange(changed, totalPresent, removed) {
this._super(...arguments);
if (changed.type) {
this.controller.set('page', 1);
}
}
话虽如此,如果您从 queryParamsDidChange
内部更改查询参数,您可能会陷入不断更改查询参数的无限循环,所以要小心!
思路是当type
参数改变时,我将page
参数值修改为默认值。
我尝试了 this.queryParams.page = 1
但它不起作用。
我也试过 this.paramsFor(this.routeName).page = 1
但还是不行。
我该如何解决这个问题?谢谢。
Ember.Route Class:
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
page: {refreshModel: true},
type: {refreshModel: true}
},
model(params) {
return this.store.query('posts', params);
},
actions: {
queryParamsDidChange(changed, totalPresent, removed) {
this._super(...arguments);
if(changed.type) {
//TODO: Modify the value of page parameter
}
}
}
});
Ember.Controller Class:
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['page', 'type'],
page: 1,
type: null
});
查询参数绑定到控制器属性,如第二个代码块所示。要更改查询参数,您必须更改控制器上的 属性:
queryParamsDidChange(changed, totalPresent, removed) {
this._super(...arguments);
if (changed.type) {
this.controller.set('page', 1);
}
}
话虽如此,如果您从 queryParamsDidChange
内部更改查询参数,您可能会陷入不断更改查询参数的无限循环,所以要小心!