Knockout.js - 启用范围绑定

时间:2013-07-02 21:47:27

标签: binding knockout.js

我正在寻找通过knockout.js启用或禁用范围(块的所有子元素)的最佳方法。理想情况下,它应该如下所示:

<div data-bind="enable:isEnabled()">
    <input type="text" data-bind="value: val1" /><br>
    <input type="text" data-bind="value: val2" />
</div>

此代码现在无效(http://jsfiddle.net/NquQK/)。我该如何实现呢?这个任务可能已经存在现成的绑定或插件吗?

1 个答案:

答案 0 :(得分:2)

简单的自定义绑定可以实现您的需求:

KO:

ko.bindingHandlers.enableAll = {
    update: function(elem, valueAccessor) {
        var enabled = ko.utils.unwrapObservable(valueAccessor());

        ko.utils.arrayForEach(elem.getElementsByTagName('input'), function(i) {
            i.disabled = !enabled;
        });
    }
};

HTML:

<div data-bind="enableAll: isEnabled()">
    <input type="text" data-bind="value: val1" /><br>
    <input type="text" data-bind="value: val2" />
</div>

http://jsfiddle.net/NquQK/2/