如何使用query-params-new
在Ember.js中观察多个查询参数,而无需在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
我想在控制器中有一个观察所有这些属性的方法,但不必列出它们,例如:
something: function() {
...
}.property('first', 'second', 'third', ...)
编辑:
我循环遍历queryParams
数组,并在相应的属性上为每个数组设置一个观察者,如下所示:
init: function () {
this._super();
var queryParams = this.get('queryParams');
var self = this;
queryParams.forEach(function (param) {
self.addObserver(param, self, 'updateSelectedOptionsIfQueryParamsChange');
});
},
它按预期工作。有没有更好的方法来做到这一点,或者这是正确的吗?
答案 0 :(得分:16)
当查询参数更改时,将触发操作queryParamsDidChange
。这可以在控制器或路由中使用,以便在查询参数更改时触发您需要运行的逻辑。
示例:
App.ApplicationRoute = Ember.Route.extend({
actions: {
queryParamsDidChange: function() {
// do some funky stuff
}
}
});
来自Example jsbin 的