Объект окна в success()
и в someFunction()
не совпадает, так как Ext.widget
создаст отдельный экземпляр в обеих функциях. поэтому данные не будут сохраняться. Чтобы сохранить данные, вы можете использовать либо config
, либо 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 — это объект окна, который будет уничтожен при закрытии, поэтому мы не можем его использовать. во-вторых, это данные, которые являются обычной переменной, которая будет сохраняться до тех пор, пока соответствующее представление не будет уничтожено. так что вы можете использовать 2-й конфиг.
Вы можете найти работающую скрипту здесь.
person
Super Man
schedule
16.09.2019