JSFiddle - React, Tailwind, and code Playground
by amoiseev
JavaScript
// http://stackoverflow.com/questions/11619648/ext-js-get-modified-records-with-model-validations-error
Ext.define('Person', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name', type: 'string' },
{ name: 'age', type: 'int', useNull: true }
],
validations: [
{ type: 'presence', field: 'age' }
]
});
Ext.define('PersonStore', {
extend: 'Ext.data.Store',
model: 'Person',
data: [
{ name: 'Anton', age: 25 },
{ name: 'Michael', age: 24 },
{ name: 'Sheee', age: 25 },
{ name: 'Ivan', age: 27 }
],
getDirty: function() {
var i, dirtyModels = [];
for (i = 0; i < this.getCount(); i++) {
if (this.getAt(i).dirty || this.phantom === false || ) {
dirtyModels.push(this.getAt(i));
}
}
return dirtyModels;
},
getModified: function() {
var i, modifiedModels = [];
for (i = 0; i < this.getCount(); i++) {
if (this.getAt(i).isModified()) {
modifiedModels.push(this.getAt(i));
}
}
return modifiedModels;
}
});
Ext.onReady(function () {
var store = Ext.create('PersonStore'),
person;
var print = function(persons) {
var i;
for (i = 0; i < persons.length; i++) {
person = persons[i];
person.phantom = false;
console.log(
person.get('name') + ' - ' +
person.get('age') + ' - ' +
person.isValid());
}
console.log('\n');
};
// Initial state
print(store.getRange());
store.getAt(2).set('age', null);
store.add({ name: 'Mike', age: null });
//store.getAt(4).phantom = true;
//print(store.getModifiedRecords());
//print(store.getRange());
print(store.getDirty());
print(store.getNewRecords());
});