KoLite contains a set of helpers to aid in creating MVVM applications using JavaScript and Knockout. Including:
- asyncCommand
- activity
- dirtyFlag
1.0.3
##NuGet Also available on NuGet at https://nuget.org/packages/KoLite
demo: http://jsfiddle.net/johnpapa/FhLvf/
<button data-bind="command: saveCommand">Save</button>
self.saveCommand = ko.asyncCommand({ execute: function(callback) { $.ajax({ complete: callback, data: { name: self.name() }, type: 'POST', url: '/save/', success: function(result) { alert('Name saved:' + result) } }) }, canExecute: function(isExecuting) { return !isExecuting && self.name() } })
<div data-bind="command: {onmouseover: tooltipCommand}">Information</div>
<button data-bind="activity: saveCommand.isExecuting, command: saveCommand">Save</button>
// Your model var Person = function () { var self = this; self.id = ko.observable(); self.firstName = ko.observable().extend({ required: true }); self.lastName = ko.observable().extend({ required: true }); self.dirtyFlag = new ko.DirtyFlag([self.firstName,self.lastName]); return self; };
Hook these into your viewmodel ...
//Property on your view model. myPerson is an instance of Person. //Did it Change? isDirty = ko.computed(function () { return myPerson().dirtyFlag().isDirty(); }),
//Resync Changes dirtyFlag().reset();
>= jQuery 1.4.4
>= KnockoutJS 2.0.0
Hans Fjällemark
John Papa
Inspired by http://KnockoutJS.com
Copyright © 2012 Hans Fjällemark & John Papa.
KoLite is under MIT license - http://www.opensource.org/licenses/mit-license.php