【问题标题】:Ember Route queryParams default valuesEmber 路由查询参数默认值
【发布时间】:2017-01-17 12:56:50
【问题描述】:

我对 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 }。有没有办法像控制器 queryParams 一样为 Route queryParams 设置默认值?

【问题讨论】:

标签: ember.js


【解决方案1】:

你可以在你的路由器模型钩子中设置默认值,然后你不需要在你的控制器中设置它们:

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

【讨论】:

  • 例如没有任何优雅的方式可以将默认值与 Route 和 Controller 同步?
  • 据我所知,没有什么好的声明方式可以做到这一点
猜你喜欢
  • 2019-12-05
  • 2021-01-08
  • 2020-05-17
  • 2016-03-12
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2021-04-17
  • 2016-08-21
相关资源
最近更新 更多