How to conditionally push an item in an observable array?

An observableArray exposes an indexOf function (wrapper to ko.utils.arrayIndexOf). This allows you to do: if (myObservableArray.indexOf(itemToAdd) < 0) { myObservableArray.push(itemToAdd); } If the two are not actually a reference to the same object and you want to run custom comparison logic, then you can use ko.utils.arrayFirst like: var match = ko.utils.arrayFirst(myObservableArray(), function(item) { return itemToAdd.id … Read more

How to use knockout.js with ASP.NET MVC ViewModels?

I think I have summarized all your questions, if I missed something please let me know (If you could summarize up all your questions in one place would be nice =)) Note. Compatibility with the ko.editable plug-in added Download the full code How do you use html helpers with knockout.js This is easy: @Html.TextBoxFor(model => … Read more

jQuery UI datepicker change event not caught by KnockoutJS

I think that for the jQuery UI datepicker it is preferable to use a custom binding that will read/write with Date objects using the APIs provided by the datepicker. The binding might look like (from my answer here): ko.bindingHandlers.datepicker = { init: function(element, valueAccessor, allBindingsAccessor) { //initialize datepicker with some optional options var options = … Read more