我不明白你为什么要有两个
tr
首先。你能做的就是
computed
它将为您返回正确的类,并且只有一行始终可见。不需要处理隐藏/显示等。
Look at this article on the css binding
以及它是如何做到的。以下是我的建议:
<table class="listing">
<tbody class="no-wrap" data-bind="foreach: searchResultsListing.pagedItems, select: searchResultsListing">
<tr data-bind="css: { rowClass($data), selected: $root.searchResultsListing.isSelected($data) }">
<td class="check"><span></span></td>
<tr/>
</tbody>
</table>
以及pureComputed(包装在函数中以便我们可以传递$data):
var rowClass = function(data) {
return ko.pureComputed(function(){
return isMatchedCase(data) ? 'selectablematch' : 'selectable')
)}
}