我最終編寫了一個自定義綁定來代替默認的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>
可能重複[什麼是隱藏,而淘汰賽的js屏幕的最佳方法綁定正在構建?](http://stackoverflow.com/questions/9532595/what-is-the-best-way-to-hide-the-screen-while-knockout-js-bindings-are-being-bui ) –