1

我有一个场景,我想成为 abel 具有可见性绑定。我希望它是虚拟的。

这个小提琴解决了我的问题,但我想要一个 bindgHandler 。我要解决的问题是,如果块属性为 true,则元素应该占用 HTML 中的空间,并且我不想渲染不必要的东西。

http://jsfiddle.net/7ENpC/1/

我想成为 abel 来做这件事,或者更好当然。

<!-- 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;
4

1 回答 1

1

要使自定义绑定能够用作虚拟元素,您需要添加

ko.virtualElements.allowedBindings.<your custom binding name here> = true;

所以,在你的情况下,你会想要做

ko.virtualElements.allowedBindings.visiblity = true;

在你打电话之前进入你的代码ko.applyBindings()。有关详细信息,请参阅本文档

于 2012-10-19T16:52:27.753 回答