Ember.js 自定义余烬视图中的观察者不总是在控制器属性更改时触发
我想根据多个标准过滤一组对象。也可以进行排序。到目前为止,我的设置: 分拣和过滤工作。但在切换过滤器时,我无法可靠地更新过滤器复选框视图。每当封闭控制器中的Ember.js 自定义余烬视图中的观察者不总是在控制器属性更改时触发,ember.js,Ember.js,我想根据多个标准过滤一组对象。也可以进行排序。到目前为止,我的设置: 分拣和过滤工作。但在切换过滤器时,我无法可靠地更新过滤器复选框视图。每当封闭控制器中的filterStop数组发生变化时,应触发功能filterChanged 一些代码摘录: App.FilterCheckbox = Ember.Checkbox.extend({ 'data-count': null isActive: false init: () -> # filterChan
filterStop
数组发生变化时,应触发功能filterChanged
一些代码摘录:
App.FilterCheckbox = Ember.Checkbox.extend({
'data-count': null
isActive: false
init: () ->
# filterChanged only triggered if we set a breakpoint in the init function :/?
this._super()
filterChanged: (() ->
active = this.get('controller.filterStop')[this.get('data-count')] == true
this.set('isActive', active)
).observes('controller.filterStop.@each')
});
在我的控制器中,我有一个改变过滤器顶部的动作:
filterByStops: (count) ->
old_value = this.get('filterStop')[count]
this.get('filterStop').replace(count, 1, [!old_value])
奇怪的是,filterChanged
observer函数并不总是被触发。如果我在FilterCheckbox.init
函数中设置了一个断点,并在断点被击中后继续执行,那么观察者总是触发(如预期的那样)。如果我删除断点并重新加载页面,观察者将不再触发
知道为什么这种行为依赖于断点吗?我如何设置它,以便我的复选框可以观察其封闭控制器的属性
更新:
我刚刚注意到调试器断点技巧只在使用chrome开发工具的chrome中有效。在Firefox(用于OSX)和Firebug中,技巧/欺骗不起作用。好的,所以我发现我只需要显式地告诉视图要使用哪个控制器实例。更新后的jsbin: 和我的视图代码:
{{view App.FilterCheckbox data-count="2" controller=controller}}