是否可以在ajax请求成功中创建包含表单面板的窗口?

时间:2015-03-19 12:58:07

标签: extjs extjs3

Ext JS - 我在ajax请求成功函数中创建了一个窗口。 但是我在javascript控制台中得到了这个异常: Uncaught TypeError: Cannot read property 'labelAlign' of undefined 这里有什么问题..

Ext.Ajax.request({
         success : function(form,action) {
          var win = new Ext.Window({
            title : 'Update',
            layout : 'fit',
            id : 'appWindow',
            width : 800,
            height : 400,
            modal : true,
            items : [ that.updatePanel ]
        });
        },
        failure : function(form,action) {
            alert("fail");
        }
});

1 个答案:

答案 0 :(得分:0)

在您尝试访问updatePanel变量时,我觉得您遇到了范围问题。

当成功处理程序代码被命中时,默认情况下将范围设置为浏览器窗口对象,因此无法访问您在JS代码中声明的任何变量。

相反,您应该在AJAX请求代码中配置范围,如下所示:

var updatePanel = {formPanel declaration here};

Ext.Ajax.request({
             success : function(form,action) {
              var win = new Ext.Window({
                title : 'Update',
                layout : 'fit',
                id : 'appWindow',
                width : 800,
                height : 400,
                modal : true,
                //Note I have changed that to this here...
                items : [ this.updatePanel ]
            });
            },
            failure : function(form,action) {
                alert("fail");
            },
            //Setting this line below will now allow you to access any variables defined in this JS class
            scope:this
    });

如果这适合您,请告诉我们。