// Define a "listItem" class
function listItem(name, artType, artSize) {
return {
isSelected : ko.observable(false),
name : ko.observable(name)
};
}
var viewModel = {
listItem : ko.observableArray([new listItem("item #1"), new listItem("item #2"), new listItem("item #3")]),
allSelected: ko.observable(false),
selectAll : function() {
var all = this.allSelected();
ko.utils.arrayForEach(this.listItem(), function(listItem) {
listItem.isSelected(!all);
});
return true;
}
};
ko.applyBindings(viewModel);
<input type="checkbox" data-bind="click: selectAll, checked: allSelected" /> Check All
<ul data-bind="template: { name: 'liTemplate', foreach: listItem }"></ul>
<script id="liTemplate" type="text/html">
<li>
<input type="checkbox" data-bind="checked: isSelected" />
<span data-bind="text: name"></span>
</li>
</script>
td { vertical-align: top; padding: 5px; }
body{ padding: 5px; }
External resources loaded into this fiddle: