JSFiddle - React, Tailwind, and code Playground
by madcapnmckay
HTML
<link rel="stylesheet" href="http://code.jquery.com/ui/1.8.20/themes/base/jquery-ui.css">
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.0.0/knockout-min.js"></script>
<h1 id="heading"> <text data-bind="text: parentModel.childrenCount"></text> Fields selected</h1>
<table id="form">
<tbody data-bind="foreach: parentModel.children">
<tr>
<td data-bind="text:name"></td>
<td><input type="checkbox" data-bind="checked:isSelected"/></td>
</tr>
</tbody>
</table>
<a href="#" id="btn-add" data-bind="click: parentModel.addMore">Add More Fields</a>
JavaScript
var Child = function(name) {
var self = this;
self.name = ko.observable(name);
self.isSelected = ko.observable(false);
},
Parent = function() {
var self = this;
self.children = ko.observableArray([
new Child('One'),
new Child('Two'),
new Child('Three')
]);
this.childrenCount = ko.computed(function() {
var count = 0;
ko.utils.arrayForEach(self.children(), function (child) {
if (child.isSelected()) {
count++;
}
});
return count;
});
this.addMore = function () {
self.children.push(new Child("Extra " + (self.children().length + 1)));
};
};
var ViewModel = function () {
var self = this;
this.parentModel = new Parent();
};
ko.applyBindings(new ViewModel());