Как убедиться, что функция не выполняется, пока Ext.FormPanel успешно отправит свои данные? - PullRequest
0 голосов
/ 23 декабря 2010

У меня есть Ext.FormPanel с кнопкой Save, которая должна выполнять две вещи в следующем порядке: (1) отправлять данные, (2) возвращаться на страницу, откуда он был вызван.

buttons: [{
        text: 'Save',
        handler: function() {
            if(panel_form.getForm().isValid()){
                panel_form.getForm().getEl().dom.action = 'backend/page/blocks/edit_positioned_post/17.html';
                panel_form.getForm().getEl().dom.method = 'POST';
                panel_form.getForm().submit(); //FIRST POST DATA
                replace_region_with_uri_content('/backend/page'); //THEN GO BACK
            } else {
                Ext.Msg.minWidth = 360;
                Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
            }
        }
    },{
        text: 'Cancel',
        handler: function(){
            replace_region_with_uri_content('/backend/page');
        }
    }]

Однако то, что на самом деле происходит , является обратным, как я могу видеть в Firebug, т.е.1012 * и (2) отправляют данные, что приводит к тому, что в сетке, возвращаемой к , не отображаются обновленные данные .

alt text

Как заставить его выполнить replace_region_with_uri_content() только после завершения panel_form.getForm().submit(), т. Е. Отправив первую функцию в качестве обратного вызова второй?

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Вы должны добавить событие в форму, проверить событие actioncomplete для BasicForm -

http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.BasicForm

Вам следует только перенаправить сюда, поскольку после выполнения этого события ваша форма должна была быть отправлена.

0 голосов
/ 23 декабря 2010

Я нашел это, вы можете добавить «функцию успеха» в массив параметров submit () следующим образом:

    buttons: [{
            text: 'Save',
            handler: function() {
                if(panel_form.getForm().isValid()){
                    panel_form.getForm().getEl().dom.action = 'backend/page/blocks/edit_positioned_post/17.html';
                    panel_form.getForm().getEl().dom.method = 'POST';
                    panel_form.getForm().submit({
                        success : function(form, action) {
                            replace_region_with_uri_content('/backend/page');
                        }
                    })
                } else {
                    Ext.Msg.minWidth = 360;
                    Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
                }
            }
        },{
            text: 'Cancel',
            handler: function(){
                replace_region_with_uri_content('/backend/page');
            }
        }]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...