悟空博客 发表于 2012-12-22 21:25:07

Knockoutjs实战开发:控制子绑定(control descendant bindings)

<div id="cnblogs_post_body">在上一篇文章中我们介绍了如何来创建一个自定义绑定,今天我们就继续来学习如何来控制子绑定(control descendant bindings)。在此之前我们首先说明一下,此项功能相对来说比较高级,通常我们在创建自己的可重用的库时我们才会使用,不是说当我们在使用Knockoutjs创建我们的应用时一定要使用此项功能的。
在默认情况下,一个绑定只对它所绑定的element元素起作用。但是如果我们想要此绑定对它所绑定的element的所有子element起作用我们应该怎么办呢?我们在自定义binding的时候我们可以告诉Knockoutjs不绑定他的子元素,这样我们自己定义的绑定就可以以我们喜欢的方式任意绑定了。我们只需要在init函数中返回{ controlsDescendantBindings: true }即可
一、控制是否对子绑定起作用
我们来举一个非常简单的例子,我们自定义一个绑定名为:allowBindings,这样如果他的值为true的话我们就进行子绑定。如果他的值为false则不会对子绑定起任何作用。
<div class="cnblogs_code">1 <script type="text/javascript">2     ko.bindingHandlers.allowBindings = {3       init: function (elem, valueAccessor) {4             // Let bindings proceed as normal *only if* my value is false 5             var shouldAllowBindings = ko.utils.unwrapObservable(valueAccessor());6             return { controlsDescendantBindings: !shouldAllowBindings };7       }8     };9 </script>
页: [1]
查看完整版本: Knockoutjs实战开发:控制子绑定(control descendant bindings)