Ember Route queryParams默认值

时间:2016-09-09 11:23:29

标签: ember.js

我在Ember Route中遇到queryParams默认值的问题。我的路线类看起来像:

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
      }
    });
  }
});

和控制器:

import Ember from 'ember';

export default Ember.Controller.extend({
  queryParams: {
    pageNumber: 'page',
    pageSize: 'limit'
  },

  pageNumber: 1,
  pageSize: 25
});

但是如果url没有'page'和'limit'查询参数,则模型钩子参数有{pageNumber:undefined,pageSize:undefined}。有没有办法为Route queryParams设置deafault值,比如控制器queryParams?

1 个答案:

答案 0 :(得分:5)

您可以在路由器模型挂钩中设置默认值,然后您无需在控制器中设置它们:

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'
  }
});