私は、可視性バインディングを持つことができるようになりたいというシナリオを持っています。そして、私はそれが仮想であることを望んでいます。
このフィドルは私の問題を解決しますが、それの bindgHandler が必要です。私が解決したい問題は、ブロック プロパティが true の場合、要素が HTML のスペースを占有する必要があり、必要のないものをレンダリングしたくないということです。
私はもちろん、これを行うことができるようになりたいです。
<!-- ko foreach: allRows -->
<!-- ko visibility: $data-->
<div>
<span data-bind="text:text"></span>
</div>
<!-- /ko -->
<!-- /ko -->
bindingHandler で私がすることはすべてです
if(block)
$element.css("visibility","hidden");
else
$element.css("visibility","visible");
私はそれを正しく理解できません...誰かが私を正しい方向に助けてくれますか.
ko.bindingHandlers.visibility = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var child = ko.virtualElements.firstChild(element),
var visible = valueAccessor().visible();
var block= valueAccessor().block();
if (!block||!visible) {
//call the general if binding ?
} else {
//Add visibility:hidden class
}
}
};
ko.virtualElements.allowedBindings.visibility = true;