我想根据多个标准过滤一个对象数组。也可以进行分类。到目前为止我的设置:http://emberjs.jsbin.com/OxIDiVU/284/edit
排序和过滤工作。但是,当切换过滤器时,我无法可靠地更新我的过滤器复选框视图。只要封闭控制器中的filterChanged
数组发生更改,就应触发函数filterStop
。
部分代码摘录:
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')
});
在我的控制器中,我有一个更改filterStop
:
filterByStops: (count) ->
old_value = this.get('filterStop')[count]
this.get('filterStop').replace(count, 1, [!old_value])
现在奇怪的是,filterChanged
观察者功能并不总是被触发。如果我在FilterCheckbox.init
函数中设置断点并在断点被击中后继续执行,则观察者始终触发(如预期的那样)。如果我删除断点并重新加载页面,则观察者不再触发。
为什么这种行为取决于断点的任何想法?如何设置它,以便我的复选框可以观察其封闭控制器的属性?
更新: 我只是注意到调试器断点技巧仅适用于带有chrome dev工具的chrome。在使用Firebug的Firefox(for OSX)中,技巧/欺骗无效。
答案 0 :(得分:0)
Okey所以我发现我只需要明确地告诉视图要使用哪个控制器实例。更新的jsbin:http://emberjs.jsbin.com/OxIDiVU/287/edit
我的观看代码:
{{view App.FilterCheckbox data-count="2" controller=controller}}