如何在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)