3

ノックアウト.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 に答える