如何从window获取数据到主屏幕
How to get the data from the window to the main screen
在某些 Ajax 调用成功后,我将打开一个 window 并将响应附加到 window。这是我的代码。
success: function (response) {
var data = Ext.decode(response.data);
var window = Ext.widget('win');
window.data = data;
window.show();
},
现在我正在做一些操作,所有经过修改的数据都在 window 对象中可用。保存后我将关闭 window。在 Parent 上,当我尝试像这样访问时,我没有获得任何价值。如何处理这个。
someFunction : function(){
var window = Ext.widget('win');
window.data ; // Fail (No data available).
}
Window success()
和 someFunction()
中的对象与 Ext.widget
不同,将在两个函数中创建一个单独的实例。所以数据不会被持久化。要保留数据,您可以使用 config
或 viewModel
.
我已经根据您的场景创建了一个示例代码,以使用对特定视图及其控制器具有全局性作用的配置将数据保存在 window 关闭时。
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 是一个 window 对象,它会在关闭时被销毁,所以我们不能使用它。第二个是数据,它是一个普通变量,除非相应的视图被销毁,否则它将被持久化。所以你可以使用第二个配置。
你可以找到工作 fiddle here.
在某些 Ajax 调用成功后,我将打开一个 window 并将响应附加到 window。这是我的代码。
success: function (response) {
var data = Ext.decode(response.data);
var window = Ext.widget('win');
window.data = data;
window.show();
},
现在我正在做一些操作,所有经过修改的数据都在 window 对象中可用。保存后我将关闭 window。在 Parent 上,当我尝试像这样访问时,我没有获得任何价值。如何处理这个。
someFunction : function(){
var window = Ext.widget('win');
window.data ; // Fail (No data available).
}
Window success()
和 someFunction()
中的对象与 Ext.widget
不同,将在两个函数中创建一个单独的实例。所以数据不会被持久化。要保留数据,您可以使用 config
或 viewModel
.
我已经根据您的场景创建了一个示例代码,以使用对特定视图及其控制器具有全局性作用的配置将数据保存在 window 关闭时。
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 是一个 window 对象,它会在关闭时被销毁,所以我们不能使用它。第二个是数据,它是一个普通变量,除非相应的视图被销毁,否则它将被持久化。所以你可以使用第二个配置。
你可以找到工作 fiddle here.