Как получить грязные записи из хранилища данных ExtJS?
кроме итерации по записям в магазине и проверки грязного флага, есть ли более чистый способ?
редактировать
я использую ExtJS4, кстати.
вот фрагмент возвращенных данных. Обратите внимание, что есть dirty: true
С modified
набор объектов (который на самом деле является старыми данными и
4 ответов
хитрость в том, что читателю магазина нужно назначить idProperty или все строки считаются новыми. Вот конструкция, которая работает для меня:
Ext.define('Sites', {
extend: 'Ext.data.Model',
fields: [
{name: 'inCphr', type: 'boolean'},
{name: 'department', type: 'string'},
{name: 'commune', type: 'string'},
{name: 'clinic', type: 'string'},
{name: 'sitecode', type: 'int'},
{name: 'dbsite', type: 'int'},
{name: 'ipAddress', type: 'string'},
{name: 'network', type: 'string'},
{name: 'lastChanged', type: 'date'}
]
});
var store = Ext.create('Ext.data.Store', {
model: 'Sites',
proxy: {
type: 'ajax',
url : 'getHaitiSites.php?task=get',
reader:{
type:'json',
root: 'results',
idProperty: 'sitecode'
}
}
});
Если вы можете получить сетку, чтобы показать "грязные" элементы, то сохраните.getUpdatedRecords ().длина будет > 0. Я видел один комментарий, который предполагал, что это будет работать только с читателем json, но я не вижу, почему это не будет работать и для других структур данных.
store.getUpdatedRecords()
на в ExtJS 4 или store.getModifiedRecords()
в ExtJs3
Это связано с указанными проверками полей модели.
см. url ниже:
http://www.sencha.com/forum/showthread.php?141421-Ext.data.Store-getNewRecords%28%29-behaves-strange