У меня есть набор флажков и флажок «Выбрать все», реализованный следующим образом с помощью Knockout. Мне нужно, чтобы флажок «Выбрать все» был установлен по умолчанию при загрузке страницы.
$(document).ready(function(){
viewModel=new model(ko,$);
ko.applyBindings(viewModel);
});
function model(ko,$){
var jsonResponse= $.parseJSON(response);
this.factors=ko.observableArray(jsonResponse["factors"]);
this.selectedFactors=ko.observableArray();
this.selectAll = ko.dependentObservable({
read: function() {
return this.selectedFactors().length === this.factors().length;
},
write: function(newValue) {
this.selectedFactors(this.selectedFactors().length === this.factors().length ? [] : this.factors().slice(0));
},
owner: this
});
}
HTML:
<table>
<tr>
<td><input type="checkbox" id="selectAll" data-bind="checked: selectAll" />Select All</td>
</tr>
</table>
<table data-bind="foreach: factorsSplitJsonArray">
<tr data-bind="foreach: $data">
<td>
<!-- ko if: $data.hasOwnProperty("factorCode") -->
<input type="checkbox" class="jqFactors" id="jqFactors" data-bind="checkedValue: $data, checked: $root.selectedFactors" />
<span data-bind="text: factorDescription"></span>
<!-- /ko -->
</td>
</tr>
</table>
Когда я устанавливаю или снимаю выделение любого флажка или флажка SelectAll, изменяется observableArray, т.е. selectedFactors. Теперь мне нужно, чтобы флажок «Выбрать все» был установлен по умолчанию при загрузке страницы, и в selectedFactors также должны быть все выбранные факторы.
Я новичок в Knockout и не могу понять, как это реализовать с помощью Knockout. Что, если мы каким-то образом явно вызовем функцию selectAll, выполнит ли она свою работу? Как мне вызвать функцию ko.dependentObservable. Кто-нибудь может мне помочь.