如何在Ember中观察更改查询参数?

Nat*_*man 7 ember.js

如何在Ember.js中观察多个查询参数,使用query-params-new,而不显式列出每个查询参数observes(),或property().

假设我有以下查询参数列表:

queryParams: [
    'first',
    'second',
    'third',
    'fourth',
    'fifth',
    'sixth',
    'seventh',
    'eighth',
    'ninth',
    'tenth'
],

first: null,
second: null,
third: null,
fourth: null,
fifth: null,
sixth: null,
seventh: null,
eighth: null,
ninth: null,
tenth: null
Run Code Online (Sandbox Code Playgroud)

我想在控制器中有一个方法来观察所有这些属性,但不必列出它们,例如:

something: function() {
    ...
}.property('first', 'second', 'third', ...)
Run Code Online (Sandbox Code Playgroud)

编辑:

我循环遍历queryParams数组,并在相应的属性上为每个数组设置一个观察者,如下所示:

init: function () {
    this._super();
    var queryParams = this.get('queryParams');
    var self = this;
    queryParams.forEach(function (param) {
        self.addObserver(param, self, 'updateSelectedOptionsIfQueryParamsChange');
    });
},
Run Code Online (Sandbox Code Playgroud)

它按预期工作.有没有更好的方法来做到这一点,或者这是正确的吗?

man*_*sch 17

当查询参数更改时,queryParamsDidChange将触发操作.这可以在控制器或路由中使用,以便在查询参数更改时触发您需要运行的逻辑.

例:

App.ApplicationRoute = Ember.Route.extend({
  actions: {
    queryParamsDidChange: function() {
      // do some funky stuff
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

来自PR的示例jsbin