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 для окна и функция перестает работать. Подскажите, в чем может быть проблема?
Заранее премного благодарен!
GrinRom
30 ноября 2014, 14:21
modx.pro
1 278
0

Комментарии: 1

GrinRom
30 ноября 2014, 17:40
0
А и еще сразу очень важный вопрос, так и не могу пока найти решение. У меня почему-то когда открывается окно с редактированием, не отмечены изначально чекбоксы:
{
                    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)
                        }
                    }
Может что-то добавить надо?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1