3

我正在寻找通过 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/)。我该如何实施?也许这个任务已经存在现成的绑定或插件?

4

1 回答 1

2

一个简单的自定义绑定可以完成您所需要的:

高:

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/

于 2013-07-02T21:56:23.330 回答