Удаленные / Модифицированные / Добавленные записи из магазина extjs

У меня ниже магазин и модал для сетки в extjs 4.2.

    Ext.define('myapp.store.myStore',{
extends:'Ext.data.Store',
modal:'myapp.modal.myModal',
storeId:'myGridStore',
data:[],//used this only when trying inline data
proxy: {
type:'memory',
reader:{
type:'json',
}
}

});
Ext.define('myapp.modal.myModal',{
extends:'Ext.data.Modal',
fields:['bla','blha']
});

Сопоставление с сеткой, хранилищем и модально выглядит хорошо, и данные правильно загружаются в сетку.

Проблема в том, когда в магазине есть модификации вроде

grid.getStore().removeAt(rowIndex)

или же

grid.getStore().add(record)

я не могу получить их через

getRemovedRecords()

а также

getNewRecords()

когда я загружаю данные в магазин с

grid.getStore().loadData(ajaxCallResponse).

Это работает нормально, когда я даю данные в строке.

Пожалуйста, помогите мне понять, что я делаю не так...

3 ответа

if(record.phantom  != true){
  record.phantom  = true;
}
store.loadData(record);

Сначала убедитесь, что phantom равен true, а затем loadData, и попробуйте использовать store.getNewRecords(), если phantom равен true, в getNewRecords () будут присутствовать только записи.

Попробуйте вместо этого store.getModifiedRecords(). Это даст вам новые и отредактированные записи. Чтобы проверить, является ли это новой записью, просто проверьте свойство "phantom" records, которое будет равно true.

также, если getNewRecords () и getRemovedRecords () не возвращают какие-либо записи, попробуйте store.sync () после добавления / удаления записи.

При добавлении новой записи в хранилище мне пришлось установить для атрибута фантома значение true (как предложено @Naren Sathya в предыдущем ответе), чтобы метод getModifiedRecords() фактически перечислял эти вновь добавленные записи:

// Create a new default record
var newServerConfig = new App.model.mConfigServer({
    id: idForNewRecord,
    server: 'server',
    port: 8443,
    username: 'user',
    password: ''
});

/* Setting the phantom property to 'true' will ensure this record will be listed
 * when trying to retrieve those new records with store.getModifiedRecords() later on
 */ 
newServerConfig.phantom = true;

// Add it to the store
storeServers.add(newServerConfig);
Другие вопросы по тегам