JSFiddle - React, Tailwind, and code Playground
by ipeshev
JavaScript
ko.extenders.isDirty = function(target,option){
var _obj = ko.toJS(target);
function getVal(el){
return typeof option == 'string' &&
typeof el == "object" ? el[option] : el;
}
var initialState = getVal(_obj) ;
var dirty = false;
target.isDirty = (function(){
return function(){ ();return dirty};
}());
target.subscribe(function(el){
console.log(el,"change");
if(initialState!=getVal(ko.toJS(el))){
dirty = true;
}
else {
dirty = false;
}
});
return target;
}
var obj = {id:"1",name:"ssss"};
var obj1 = {id:"2",name:"ssss"};
var obj2 = {id:"1",name:"sssssss"};
var obj3 = {id:"3",name:"ssss"};
var p = ko.observableArray([obj,obj1]).extend({'isDirty': 'id'});
console.dir(p);
var v = ko.observable(obj1).extend({'isDirty': 'id'});
var _obs = [p,v];
var isAnyDirty = ko.computed(function(){
var res = false;
ko.utils.arrayForEach(_obs,function(el){
res = res || el.isDirty();
});
return res;
});
p([obj,obj1]);
console.log(p.isDirty());
setTimeout(function(){
return;
console.log(isAnyDirty());
},2000);