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