Roman L
Roman L

Reputation: 51

Ember Route queryParams default values

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

Answers (1)

Adam Cooper
Adam Cooper

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

Related Questions