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