我有一个场景,我希望能够具有可见性绑定。 我希望它是虚拟的。
这个小提琴解决了我的问题,但我想要一个bindgHandler。 我想要解决的问题是,如果一个块属性为true,那么elemnt应该占用HTML中的空间,我不想渲染不合适的东西。
我希望能够做到这一点或做得更好。
<!-- ko foreach: allRows -->
<!-- ko visibility: $data-->
<div>
<span data-bind="text:text"></span>
</div>
<!-- /ko -->
<!-- /ko -->
在bindingHander中,我所做的只是
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;
答案 0 :(得分:1)
要使自定义绑定能够用作虚拟元素,您需要添加
ko.virtualElements.allowedBindings.<your custom binding name here> = true;
所以,在你的情况下,你会想做
ko.virtualElements.allowedBindings.visiblity = true;
在致电ko.applyBindings()
之前,请进入您的代码。有关详细信息,请参阅this documentation。