I have some flags tied to an array in my model. This works great when you check the box, the array is updated accordingly.
However, when the value has changed, I want to call a method on my model to filter the results based on the new values. I tried attaching a change event, but this seems to matter before the change, not after the change.
I illustrated my problem in jsfiddle http://jsfiddle.net/LpKSe/ , which might make this more reasonable.
For the sake of completeness, my code is repeated here.
Js
function SizeModel() { var self = this; self.sizes = ko.observableArray(["small", "medium", "large"]); self.sizes2 = ko.observableArray(["small", "medium", "large"]); self.getResults = function(e) { alert(self.sizes()); }; self.getResults2 = function(e) { alert(self.sizes2()); }; } $(document).ready(function() { sizeModel = new SizeModel(); ko.applyBindings(sizeModel); });
HTML
<h3>Size <input type="checkbox" value="small" data-bind=" checked: sizes, event:{change: getResults}"/> <span class='headertext'>Small</span> <input type="checkbox" value="medium" data-bind=" checked: sizes, event:{change: getResults}" /> <span class='headertext'>Medium</span> <input type="checkbox" value="large" data-bind=" checked: sizes, event:{change: getResults}" /> <span class='headertext'>Large</span> </h3> <h3>Size <input type="checkbox" value="small" data-bind=" checked: sizes2, event:{click: getResults2}"/> <span class='headertext'>Small</span> <input type="checkbox" value="medium" data-bind=" checked: sizes2, event:{click: getResults2}" /> <span class='headertext'>Medium</span> <input type="checkbox" value="large" data-bind=" checked: sizes2, event:{click: getResults2}" /> <span class='headertext'>Large</span> </h3>
Mingo source share