J'ai un ensemble de cases à cocher et une case à cocher Sélectionner tout implémentée de la manière suivante en utilisant Knockout. J'ai besoin de la case "Sélectionner tout" à cocher par défaut lors du chargement de la page.Cochez la case "Sélectionner tout" en utilisant 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>
Quand je sélectionner ou désélectionner une case à cocher ou la case SelectAll la observableArray-à-dire selectedFactors sont changés. Maintenant j'ai besoin de la case à cocher "Sélectionner tout" pour être sélectionné par défaut lors du chargement de la page et les éléments sélectionnés doivent également contenir tous les facteurs sélectionnés. Je suis nouveau à Knockout et incapable de découvrir comment implémenter cela en utilisant Knockout. Que faire si nous appelons en quelque sorte la fonction selectAll explicitement, fera-t-elle le travail? Comment appeler une fonction ko.dependentObservable. Quelqu'un peut-il m'aider s'il vous plaît.
Merci pour votre aide mais je nai pas été en mesure de vraiment comprendre cela et mettre en œuvre. Est-ce que la case "Sélectionner tout" est cochée au chargement de la page? – Arunabh
Si "Sélectionner tout" doit être sélectionné au chargement de la page dépend probablement de toutes les données en cours de chargement, en supposant que votre page peut conserver un côté serveur d'état. Si l'utilisateur a précédemment tout sélectionné, alors jsonData.selectedFactors va contenir tous les codes et la case "Select All" sera également vérifiée. – Jeroen
Ce que je comprends de votre commentaire est que tous les facteurs du JSON sont attribués à "selectedFactors" afin qu'il coche "Sélectionner tout" au chargement de la page. Je l'avais déjà essayé et il vérifie "tout sélectionner" et tous les autres facteurs mais son comportement n'est pas exactement correct. Si je désélectionne une case à cocher, elle conserve toujours la case Tout sélectionner cochée. Dans l'idéal, elle doit décocher la case «Sélectionner tout» et cliquer à nouveau sur cette case pour sélectionner la case non cochée. – Arunabh