使用Knockout JS set visible:对可观察数组中的项进行数据绑定。有没有办法可以在Knockout JS中计算出具有可见数据绑定= true的项目数?
我尝试过这样的事情(不工作):
var visibleItems = ko.utils.arrayFilter(self.MyItems(), function(item) {
return item.visible == true;
});
var result = visibleItems().length;
在此测试中,item.visible未定义。这就是我正在寻找的,我怎样才能获得与其“data-bind = visible:”相对应的Knockout JS'可见状态属性值?是否可以在项目中的某个位置访问?
答案 0 :(得分:2)
除非您的可观察数组self.MyItems
中的项具有visible
属性,否则您要执行的操作无法完成。 Knockout中的visible
绑定会更改DOM元素的display
属性,而不是更改基础数据。
来自visible
绑定的文档:
当参数解析为类似false的值(例如,布尔值false,或数值0,或null或未定义)时,绑定会将yourElement.style.display设置为none,从而导致它被隐藏这优先于您使用CSS定义的任何显示样式。
当参数解析为类似true的值(例如,布尔值为true或非空对象或数组)时,绑定将删除yourElement.style.display值,使其变为可见
答案 1 :(得分:1)
我相信你需要使用ko.computed。原因是你原来拥有的只会计算一次。
var visibleItems = ko.computed(function () {
return ko.utils.arrayFilter(self.MyItems(), function(item) {
return item.visible == true;
});
});
var result = visibleItems().length;