Reputation: 51
I have a problem with queryParams default values in Ember Route. My route class looks like:
export default Ember.Route.extend({
queryParams: {
pageNumber: { refreshModel: true },
pageSize: { refreshModel: true }
},
model(params) {
console.log(params);
return this.store.query('user', {
page: {
number: params.pageNumber,
size: params.pageSize
}
});
}
});
and controller:
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: {
pageNumber: 'page',
pageSize: 'limit'
},
pageNumber: 1,
pageSize: 25
});
But if url does not have 'page' and 'limit' query arguments, model hook params have { pageNumber: undefined, pageSize: undefined }. Is there are any way to set deafault values for Route queryParams like for controller queryParams?
Upvotes: 3
Views: 1742
Reputation: 8677
You can just set the defaults in your router model hook, then you don't need to set them in your controller:
export default Ember.Route.extend({
queryParams: {
pageNumber: { refreshModel: true },
pageSize: { refreshModel: true }
},
model(params) {
params.pageNumber = params.pageNumber || 1;
params.pageSize = params.pageSize || 25;
return this.store.query('user', {
page: {
number: params.pageNumber,
size: params.pageSize
}
});
}
});
export default Ember.Controller.extend({
queryParams: {
pageNumber: 'page',
pageSize: 'limit'
}
});
Upvotes: 6