我最终编写了一个自定义绑定来使用而不是默认的visible
.
function isHidden(el) {
var style;
style = window.getComputedStyle(el);
return (style.display === 'none')
}
ko.bindingHandlers['cssVisible'] = {
'update': function (element, valueAccessor) {
var value,
isCurrentlyVisible;
value = ko.utils.unwrapObservable(valueAccessor());
isCurrentlyVisible = !isHidden(element);
if (value && !isCurrentlyVisible) {
ko.utils.toggleDomNodeCssClass(element, 'ko-visible', true);
}
else if ((!value) && isCurrentlyVisible) {
ko.utils.toggleDomNodeCssClass(element, 'ko-visible', false);
}
}
}
然后是一些 CSS 来处理可见性
[data-bind*="cssVisible"]:not(.ko-visible) {
display: none;
}
用法同visible
绑定
<div data-bind="cssVisible: true"></div>