Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2013, 01:47
Новичок на форуме
Отправить личное сообщение для moonlight2 Посмотреть профиль Найти все сообщения от moonlight2
 
Регистрация: 29.11.2011
Сообщений: 7

Как вызвать callback при удалении из store?
Всем привет.

Не могу получить колбэк вот при таком удалении ячейки. Какие еще могут быть варианты?

onIconClick: function(grid,cell,row,col,el) {

        var store = this.getStore('File');
        var rec = store.getAt(row); 
        var iconName = el.getTarget().dataset.qtip;
        me = this;
        
        switch(iconName) {
            case 'Delete':
                me.store.remove(rec);                       // вот это место, в котором нужно получить ответ сервера
                break;
            case 'Download':
                location.href = BASE_URL + "/file.htm?hash=" + rec.data.hash;  
                break;    
            case 'Share':
                this.shareWnd.show();
                break;
        }
    }


Мое хранилище:

Ext.define('App.store.File', {   
    extend: 'Ext.data.Store',
    model: 'App.model.File',
    autoLoad: false,
    autoSync: true,
    pageSize: 7,
    proxy: {
        type: 'ajax',
        url: 'data/upload.htm',
        actionMethods: {
            create: 'POST',
            read: 'GET',
            update: 'PUT',
            destroy: 'DELETE'
        },
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'files',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            writeAllFields: false,
            root: 'files'
        },
        listeners: {
            exception: function(proxy, response, operation){
                Ext.MessageBox.show({
                    title: 'REMOTE EXCEPTION',
                    msg: operation.getError(),
                    icon: Ext.MessageBox.ERROR,
                    buttons: Ext.Msg.OK
                });
            }
        }
    }
});

Последний раз редактировалось moonlight2, 22.01.2013 в 03:24.
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2013, 08:57
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

me.store.remove(rec);
этот метод удаляет запись локально, не обращаясь к серверу, вам нужно сначала "сказать" серверу о необходимости удаления такой-то записи, а уже в callback - функции удалить запись из хранилища, например один из вариантов:

me.store.destroy({
   params: { recordId: rec.get('id') },
   callback: function(p, o) {
      // а вот здесь в зависимости от ответа сервера уже решать что делать дальше
      if( o.success ) {
          me.store.remove(rec);
      } else {
          Ext.Msg.alert('Error', o.error.statusText);
      }
   }
});
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2013, 14:11
Новичок на форуме
Отправить личное сообщение для moonlight2 Посмотреть профиль Найти все сообщения от moonlight2
 
Регистрация: 29.11.2011
Сообщений: 7

nekto_O,
Большое спасибо! Проблема решена.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как вызвать callback функцию oke11o jQuery 12 17.01.2012 13:36
GridPanel "теряет" свой store при многократном вызове экземпляров GridPanel Lokich ExtJS 1 09.09.2011 10:12
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17