Я обнаружил странное поведение removeAll. Я использую ExtJS 4.2, я не знаю, происходит ли то же самое в других более новых версиях. У меня есть этот код внутри tbar сетки:
{
itemId: 'delete',
text: 'Delete',
iconCls: 'icon-delete',
disabled: true,
handler: function() {
var selection = this.up('grid').getView().getSelectionModel().getSelection()[0];
if (selection) {
var numItems = storeProdutos.data.items.length;
var store = this.up('grid').getStore();
if(numItems != 0) {
// point 2
Ext.Msg.confirm('Confirm', 'Do you want to delete?', function(button){
if(button === 'yes') {
gridProduto.getStore().removeAll();
store.remove(selection);
gridProduto.getStore().clearFilter();
gridProduto.getStore().load();
gridMercado.getSelectionModel().select(0);
}
});
} else {
store.remove(selection);
gridProduto.getStore().clearFilter();
gridProduto.getStore().load();
gridMercado.getSelectionModel().select(0);
}
}
}
}
Когда я пытаюсь удалить, появляется окно сообщения, и я говорю "да".
Затем он удаляет store.remove(selection), но не удаляет gridProduto.getStore.removeAll (). Странно то, что в php скрипте удаления все прошло успешно.
Самое странное, что если поставить gridProduto.getStore.removeAll() на точку 2 кода и повторите все снова, он успешно удаляет все!
Я считаю, что это как-то связано с окном сообщений.
Кто-нибудь знает, как я могу это исправить?
PS: В моем магазине есть прокси для удаления с помощью ajax. Что-то вроде этого:
storeProdutos = Ext.create('Ext.data.Store',{
...
proxy: {
type: 'ajax',
api: {
destroy: '/path/someScript.php'
}
}
}