extjs - 如何从窗口获取数据到主屏幕
问题描述
在一些 Ajax 调用成功后,我打开了一个窗口,并在窗口中附加了响应。这是我的代码。
success: function (response) {
var data = Ext.decode(response.data);
var window = Ext.widget('win');
window.data = data;
window.show();
},
现在我正在做一些操作,所有的 manuplitaed 数据都可以在 window 对象中使用。保存后我正在关闭窗口。在父级上,当我尝试像这样访问时,我没有得到任何价值。如何处理这个。
someFunction : function(){
var window = Ext.widget('win');
window.data ; // Fail (No data available).
}
解决方案
Window 对象 insuccess()
和 insomeFunction()
不同,因为Ext.widget
会在这两个函数中创建一个单独的实例。所以数据不会被持久化。要持久化数据,您可以使用 aconfig
或viewModel
.
我已经根据您的场景创建了一个示例代码,以使用配置在窗口关闭时保留数据,该配置对特定视图及其控制器具有全局性。
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 调用success
,第二个按钮的处理程序代表您的someFunction
.
在这里,我保留了两个配置,win 和 data。win 是一个窗口对象,将在关闭时销毁,因此我们无法使用它。其次是数据,它是一个普通变量,除非各自的视图被破坏,否则它将被持久化。所以你可以使用第二个配置。
你可以在这里找到工作小提琴。
推荐阅读
- regex - 从 Dart 中的数字中修剪前导零
- pytorch - PyTorch 的 nn.DataParallel 是否在每个 GPU 中加载相同的模型?
- angular - 在不使用提交按钮的情况下上传多个带有预览的图像
- javascript - 反应原生 - '未定义不是对象'?
- python - Python:帮助修复我秒表上的重置功能
- reactjs - Shopify 石板主题样式未加载
- c# - Unity - 将四元数转换为 Vector3
- mysql - mysql join查询ID IN
- batch-file - Windows批处理文件循环多次打印文件
- python - Python ConnectionError: ('Connection aborted.', OSError("(10060, 'WSAETIMEDOUT')"))