ExtJS неработает функция после закрытия окна
Добрый день. Прошу помощи с ExtJS — необходимо сделать так, чтобы при закрытии окна создания/редактирования функция уничтожалась.Дело собственно вот в чем:
У меня есть в окне создания/редактирования такой вот «слушатель»
Заранее премного благодарен!
У меня есть в окне создания/редактирования такой вот «слушатель»
listeners: {
scope: this,
'change': function (textfield, newValue, oldValue) {
this.handleOnChange(textfield, newValue, oldValue)
}
}
Запускает функцию:Ext.extend(Ecodata.window.CreateItem, MODx.Window, {
handleOnChange:function() {
//your code here
// Store for random data
var childNodes = document.getElementById('chart_preview').childNodes;
for (var i = childNodes.length-1, cmp; i >= 0; i--) {
cmp = Ext.getCmp(childNodes[i].id);
if (cmp) {
cmp.destroy();
}
}
var period_categories;
var example_data;
var period;
var additional_from_period;
var graph_name = Ext.getCmp(this.id+'-graph_name').getValue();
var sourceinfo = Ext.getCmp(this.id+'-sourceinfo').getValue();
var xaxis_name = Ext.getCmp(this.id+'-xaxis_name').getValue();
var yaxis_name = Ext.getCmp(this.id+'-yaxis_name').getValue();
var razm_osn = Ext.getCmp(this.id+'-razm_osn').getValue();
var name_of_line = Ext.getCmp(this.id+'-name_of_line').getValue();
period = Ext.DomQuery.selectValue('input[name=period]:checked/@value');
period_categories = ['2000', '2001', '2002', '2003','2004', '2005', '2006', '2007','2008', '2009', '2010', '2011','2012', '2013', '2014'];
example_data = [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6, 13.9, 9.6];
if(period==1) {
period_categories = ['2000', '2001', '2002', '2003','2004', '2005', '2006', '2007','2008', '2009', '2010', '2011','2012', '2013', '2014'];
example_data = [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6, 13.9, 9.6];
additional_from_period = '';
}
if(period==3) {
period_categories = ['1 квартал', '2 квартал', '3 квартал', '4 квартал'];
example_data = [7.0, 6.9, 9.5, 14.5];
additional_from_period = ' за XXXX год';
}
if(period==12) {
period_categories = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
example_data = [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6];
additional_from_period = ' за XXXX год';
}
Ext.QuickTips.init();
new Ext.ux.HighChart({
width: 700,
series: [{
name: name_of_line,
data: example_data
}],
renderTo: 'chart_preview',
animShift: true,
chartConfig: {
chart: {
zoomType: 'x'
},
title: {
text: graph_name,
x: -20 //center
},
subtitle: {
text: sourceinfo,
x: -20
},
xAxis: [{
categories: period_categories,
title: {
text: xaxis_name + additional_from_period,
margin: 20
}
}],
yAxis: {
title: {
text: yaxis_name
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function () {
return '<b>' + this.series.name + '</b>
' +
this.x + ': ' + this.y + ' ' + razm_osn;
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
}
}
})
}
});
Ext.reg('ecodata-configs-window-create', Ecodata.window.CreateItem);
Собственно при первом открытии окна(нажатии на создать объект) все работает отлично, но вот если окно закрыть и вновь нажать на создание объекта, то генерируется судя по всему новый id для окна и функция перестает работать. Подскажите, в чем может быть проблема?Заранее премного благодарен!
Комментарии: 1
А и еще сразу очень важный вопрос, так и не могу пока найти решение. У меня почему-то когда открывается окно с редактированием, не отмечены изначально чекбоксы:
{
xtype: 'radiogroup',
fieldLabel: _('ecodata_configs_period'),
id: config.id + '-period',
anchor: '99%',
forceSelection: true,
editable: false,
items: [{
boxLabel: 'Месячные',
name: 'period',
inputValue: '12'
},{
boxLabel: 'Квартальные',
name: 'period',
inputValue: '3'
},{
boxLabel: 'Годовые',
name: 'period',
inputValue: '1'
}],
allowBlank: false,
listeners: {
scope:this,
'change': function(textfield,newValue,oldValue) {
this.handleOnChangeUp(textfield,newValue,oldValue)
}
}
Может что-то добавить надо?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.