2

foreach ループでブール値をチェックボックスにバインドすると、チェックボックスが更新されません。

    function ViewModel() {
        var self = this;

        self.test = ko.observableArray([ false, false, false ]);

        return self;
    }

ko.applyBindings(new ViewModel());


<div data-bind="text: ko.toJSON(test)"></div>

<div data-bind="foreach: $root.test">
    <input type="checkbox" data-bind="checked: $data" />
</div>

この問題は jsfiddle で確認できます: http://jsfiddle.net/KVWet/1/

4

1 に答える 1

2

http://knockoutjs.com/documentation/checked-binding.html

パラメータが配列に解決される場合は、特別な考慮が払われます。この場合、KOは、値が配列内の項目と一致するかどうかをチェックする要素を設定し、配列に含まれていない場合はチェックを外します。

アイテムがチェックされると、その値が配列に追加されるためです。チェックされていない場合は、削除されます。これを機能させるには、配列にキーを追加して、配列が属するチェックボックスと一致させる必要があると思います。ブール値の配列は、koがそれぞれのチェックボックスにマップするのに役立ちません。

于 2013-01-27T04:17:13.960 に答える