如何在Ember.Routeclass中修改queryParamsDidChange方法中的查询参数?

How to modify query parameters inside queryParamsDidChange method in Ember.Route class?

思路是当type参数改变时,我将page参数值修改为默认值。

我尝试了 this.queryParams.page = 1 但它不起作用。 我也试过 this.paramsFor(this.routeName).page = 1 但还是不行。

我该如何解决这个问题?谢谢。

Ember.Route Class:

import Ember from 'ember';

export default Ember.Route.extend({

  queryParams: {
    page: {refreshModel: true},
    type: {refreshModel: true}
  },

  model(params) {
    return this.store.query('posts', params);
  },

  actions: {
    queryParamsDidChange(changed, totalPresent, removed) {
      this._super(...arguments);

      if(changed.type) {
        //TODO: Modify the value of page parameter
      }
    }
  }

});

Ember.Controller Class:

import Ember from 'ember';

export default Ember.Controller.extend({

  queryParams: ['page', 'type'],

  page: 1,
  type: null

});

查询参数绑定到控制器属性,如第二个代码块所示。要更改查询参数,您必须更改控制器上的 属性:

queryParamsDidChange(changed, totalPresent, removed) {
  this._super(...arguments);

  if (changed.type) {
    this.controller.set('page', 1);
  }
}

话虽如此,如果您从 queryParamsDidChange 内部更改查询参数,您可能会陷入不断更改查询参数的无限循环,所以要小心!