これは、このトピックに関する他の質問と似ていますが、異なります。
それぞれに選択チェックボックスがあるレコードのリストを含むテーブルがあります。
テーブル ヘッダーには、[すべて選択] チェックボックスがあります。
ユーザーが「すべて選択」をチェック/チェック解除すると、レコードが選択/選択解除されます。これはうまくいきます。
ただし、1 つ以上のレコードの選択が解除されている場合は、[すべて選択] チェックボックスの選択を解除する必要があります。
私のマークアップ:
<table>
<thead>
<tr>
<th>Name</th>
<th><input type="checkbox" data-bind="checked: SelectAll" /></th>
</tr>
</thead>
<tbody data-bind="foreach: $data.People">
<tr>
<td data-bind="text: Name"></td>
<td class="center"><input type="checkbox" data-bind="checked: Selected" /></td>
</tr>
</tbody>
</table>
私のスクリプト(編集):
function MasterViewModel() {
var self = this;
self.People = ko.observableArray();
self.SelectAll = ko.observable(false);
self.SelectAll.subscribe(function (newValue) {
ko.utils.arrayForEach(self.People(), function (person) {
person.Selected(newValue);
});
});
}
my.Person = function (name, selected) {
var self = this;
self.Name = name;
self.Selected = ko.observable(false);
}