在这个例子中,Knockout正如预期的那样工作。我正在寻找另一种方法来实现在每个第二项上使用CSS类.last
填充动态网格的目标。在某种程度上,我可能正在寻找一种不同的方法。
我的问题在http://jsfiddle.net/96vdD/7/上有说明并在此处描述:
三个people
通过foreach
。将三个div
添加到网格中。
动态地,Knockout为从last
出来的每秒div
分配一个foreach
的css类。
同时,每个people
的可见性属性决定他是否会在网格中显示。
CSS会删除网格中每个.last
div
的边距,以防止每秒div
移动到下一行“#”。 CSS中常见的布局技术。
看看当你改变Charles' true
的可见性并运行JSFiddle。
示例中的第二个人Charles没有显示在网格中(因为他的属性visible
设置为false
)。但是,丹尼斯仍然搬到了下一排。
Knockout向Charles添加了style="display:none"
,但也将class="last"
规则应用于他,理想情况下,我希望Denise能够直观地接收class="last"
,因为她是第二个people
网格。
在应用!visible
规则时,如何让Knockout忽略class="last"
个元素?
答案 0 :(得分:4)
您可以创建仅包含可见人物的计算数组:
self.visiblePeople = ko.computed(function() {
return ko.utils.arrayFilter(self.people(), function(person) {
return person.visible;
});
});
然后在你的html中绑定它:
<div class="wrapper" data-bind="foreach: visiblePeople">