this.up () не является функцией EXTJS - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу отправить свои данные на сервер с контроллера. Код выглядит следующим образом:

renterForms: function() {
    var items3 = [{
        xtype:'foresto-renterdata',
        scrollable: true,
        scope: this,
        renderTo: 'mainPart',
        handler: function() {
            this.action3.hide();
        }
    },{
        text: 'Submit',
        ui: 'confirm',
        scope: this,
        handler: function() {
            var form = this.up('foresto-rentertype');
            if (form.isValid()) {  
                form.submit({
                    success: function(form, action) {
                        Ext.Msg.alert('Success', action.result.msg);
                    },
                    failure: function(form, action) {
                        Ext.Msg.alert('Failed', action.result.msg);
                    }
                });
            } else { /
                Ext.Msg.alert('Error', 'Please correct form errors.')
            }
        }

в chrome отладчике я вижу следующую ошибку:

Uncaught TypeError: this.up не является функцией.

Что не так? Это хороший способ получить и отправить данные?

P.S. URL для запроса POST определите в коде формы

1 Ответ

0 голосов
/ 09 ноября 2018

Объем: это

это актуальная проблема, которая связана с областью видимости внутри функции обработчика. Удалите его, и он разрешит функцию up.

Вы можете увидеть поведение с областью действия в следующем примере: https://fiddle.sencha.com/#view/editor&fiddle/2nhv

Если определено "scope: this" , тогда при построении компонента будет использоваться область видимости, которая будет внедрена в функцию-обработчик. Это эквивалентно явной записи handlerFn.bind (this) , которая просто связывает другую область и возвращает новую функцию.

...