Как получить грязные записи из хранилища данных 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


Как насчет метода getModifiedRecords () в вашем магазине? Это даст тебе то, что тебе нужно.


Это связано с указанными проверками полей модели.

см. url ниже:

http://www.sencha.com/forum/showthread.php?141421-Ext.data.Store-getNewRecords%28%29-behaves-strange