this.up() 不是函数 EXTJS

this.up() is not function EXTJS

我想将我的数据从控制器提交到服务器。 代码如下:

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 is not a function.

怎么了?这是获取和提交数据的好方法吗?

P.S。 url for POST 请求在表单代码中定义

scope: this

这是扰乱处理程序函数内部范围的实际问题。删除它,它会解决向上功能。

您可以通过以下示例查看作用域的行为 fiddle: https://fiddle.sencha.com/#view/editor&fiddle/2nhv

当定义了 "scope: this" 时,将使用构建组件时的作用域并将其注入到处理函数中。它等效于显式编写 handlerFn.bind(this) ,它只是绑定不同的范围和 returns 一个新函数。