Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何将数据从窗口传送到主屏幕_Extjs_Extjs6_Extjs6 Classic - Fatal编程技术网

Extjs 如何将数据从窗口传送到主屏幕

Extjs 如何将数据从窗口传送到主屏幕,extjs,extjs6,extjs6-classic,Extjs,Extjs6,Extjs6 Classic,在某个Ajax调用成功后,我打开了一个窗口,并得到了与该窗口相关的响应。这是我的密码 success: function (response) { var data = Ext.decode(response.data); var window = Ext.widget('win'); window.data = data; window.show(); }, 现在我正在做一些操作,所有人工数据都可以在window对象中使用。保存后,我将关闭窗口。在父母身上,当

在某个Ajax调用成功后,我打开了一个窗口,并得到了与该窗口相关的响应。这是我的密码

success: function (response) {
    var data = Ext.decode(response.data);
    var window = Ext.widget('win');
    window.data = data;
    window.show();
},
现在我正在做一些操作,所有人工数据都可以在window对象中使用。保存后,我将关闭窗口。在父母身上,当我试图获得这样的成功时,我没有得到任何价值。如何处理这个问题

someFunction : function(){
    var window = Ext.widget('win');
        window.data ; // Fail (No data available).
}

success()
someFunction()
中的窗口对象与
Ext.widget
中的窗口对象不同,它们将在这两个函数中创建一个单独的实例。因此数据不会被持久化。要持久保存数据,可以使用
config
viewModel

我已经根据您的场景创建了一个示例代码,使用configs在windowclose上保存数据,configs对特定视图及其控制器起着某种全局作用

Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create("Ext.form.Panel",{
            renderTo: Ext.getBody(),
            config: {
                win: Ext.widget('window'), //if we store window, on close we loose it
                data: "" //it will persist, so this can be used
            },
            items: [
                {
                    xtype: 'button',
                    text: 'call',
                    handler: function(){
                        var me = this;
                        Ext.Ajax.request({
                         url: 'data1.json',

                            success: function(response, opts) {
                                var data = Ext.decode(response.responseText);
                                var window = me.up().config.win;
                                me.up().config.data = data;
                                window.data = data;
                                window.show();
                            },

                            failure: function(response, opts) {
                              console.log('server-side failure with status code ' + response.status);
                            }
                        });
                    }
                }, {
                    xtype: 'button',
                    text: 'Get Value',
                    handler: function(){
                       console.log(this.up().config.win.data);
                       console.log(this.up().config.data);
                    }
                }
            ]
        });
    }
});
这里,第一个按钮的处理程序表示ajax调用
成功
,第二个按钮的处理程序表示
someFunction

这里我保留了两个配置,win和data。win是一个窗口对象,关闭时将被销毁,因此我们无法使用它。第二个是数据,它是一个普通变量,除非相应的视图被破坏,否则它将被持久化。所以你可以使用第二配置


你可以找到工作的小提琴。

你需要更加异步地思考。window.data在调用窗口后立即执行,即在数据更改之前。考虑添加回调函数或某种处理程序,这样就知道窗口何时关闭,数据可以被添加到变量“谢谢”。将其设置为隐藏,它应该可以工作-docs here:@David共享一个小提琴,复制上述行为?我将尝试创建一个小提琴,当前我正在将数据附加到窗口对象。让我来做一把小提琴。因为不知道如何使用回拨和所有。谢谢,实际上我也做了同样的事情。让我们再等几个小时,万一没人来,我会接受的。