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}}