Knockout.Dirtiable - Areson/Knockout-Extensions GitHub Wiki
Dirty tracking for observables. Adds to values to observables: dirty and clean. dirty is implemented as a computed observable and can be used to track if changes have been made to an object. Calling clean will result the dirty state of the observable.
Example
//The observable starts out clean
var observable = ko.observable("foo").extend({dirtiable: true});
//Now it is dirty: observable.dirty() == true
observable("bar");
//Make it clean!
observable.clean();
A more detail example can be seen here: http://jsfiddle.net/Areson/c4Brz/