我在Ember控制器中有一个属性,它有一个观察者。当我第一次访问页面/路由时以及当我更改值绑定的下拉列表时(如预期的那样),就会调用此方法。
发生的事情是,当我重新访问该页面并且重新设置该值时,观察者被触发(与我离开页面时的值相同)。
我需要这个的原因是,该值被用作另一个函数的过滤器,并且该函数在观察者内部被调用。
即使值与以前相同,有没有办法让观察者着火? 或者,每次加载/路由访问控制器时,从控制器触发一个函数(可能是通过运行循环)的合理方法?
答案 0 :(得分:0)
在setupController路由挂钩中,您将获得controller
引用,以便您可以使用它来调用观察者函数。
setupController(controller,model){
this._super(...arguments);
controller.get('testObserver')();
}
答案 1 :(得分:0)
我更喜欢以下风格来观察房产。
setupController(controller, model){
if (this.get('somelogic')) {
controller.addObserver('yourProperty', controller, this.get('callback'));
}
}
resetController(controller, isExisting, transition) {
if (isExisting) {
controller.removeObserver('yourProperty', controller, this.get('callback'));
}
}