Ember Route queryParams默认值

Rom*_*n L 3 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
      }
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

和控制器:

import Ember from 'ember';

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

  pageNumber: 1,
  pageSize: 25
});
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*per 6

您只需在路由器模型挂钩中设置默认值,然后就不需要在控制器中设置它们:

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'
  }
});
Run Code Online (Sandbox Code Playgroud)