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

时间:2018-04-20 03:52:12

标签: ember.js

想法是当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类:

import Ember from 'ember';

export default Ember.Controller.extend({

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

  page: 1,
  type: null

});

1 个答案:

答案 0 :(得分:1)

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

type ErrorHandler<T> = (error: any) => Observable<T>

话虽如此,如果您要从queryParamsDidChange(changed, totalPresent, removed) { this._super(...arguments); if (changed.type) { this.controller.set('page', 1); } } 内部更改查询参数,您可能会进入一个不断更改查询参数的无限循环,所以要小心!