Extjs getCmp松散了Chrome中的引用

时间:2014-04-01 05:01:54

标签: javascript google-chrome extjs

我有一个ExtJs窗口,当我点击一个按钮尝试在浏览器中打印一些文本字段的值时,它可以在Firefox中正常工作,但在Chrome中却没有...我在'我真的很困惑。

我尝试获取cmb_start_timecmb_end_time的值,在Firefox中有效,但在Chrome中无效

Ext.define('form', {
    extend: 'Ext.window.Window',

    requires: [
        'Ext.form.Panel'
    ],

    id:'ticket-form',
    height: 608,
    width: 502,
    closeAction: 'close',
    title: 'Edit Ticket',

    initComponent: function() {
        var me = this;
        archivopdf = "/pdf/pdf_init.pdf";
        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'form',
                    height: 608,
                    width: 498,
                    layout: 'absolute',
                    bodyPadding: 10,
                    title: '',
                    items: [

                        {
                            xtype: 'combobox',
                            id: 'cmb_start_time',
                            x: 20,
                            y: 180,
                            width: 180,
                            fieldLabel: 'Hora Inicio',
                            store: store_horas,
                            valueField: 'hora24',
                            displayField:'hora12'
                        },
                        {
                            xtype: 'combobox',
                            id: 'cmb_end_time',
                            x: 20,
                            y: 210,
                            width: 180,
                            fieldLabel: 'Hora Fin',
                            store: store_horas,
                            valueField: 'hora24',
                            displayField:'hora12'
                        },
                        {
                            xtype: 'button',
                            x: 310,
                            y: 530,
                            text: 'Limpiar',
                            listeners: {
                                click: function(){
                                    console.log(Ext.getCmp('cmb_start_time').getValue()) //returns NULL
                                    console.log(Ext.getCmp('cmb_end_time').getValue())   //returns NULL
                            }
                        }
                    ]
                }
            ]
        });

        me.callParent(arguments);
    }

});

var new_window = Ext.create('form')

我需要在CHROME中完成这项工作

1 个答案:

答案 0 :(得分:1)

我在您的示例中创建了一个fiddle,它在Chrome中为我工作(如果未选择任何值,则返回NULL)。

但是我无法建议通过他们的ID引用组件,因此我通过代码更改了代码以直接引用组件:

在initComponent中,我们创建组件,在varthis中保存引用,具体取决于我们需要的位置:

initComponent: function() {                
    // ...

    var firstComboBox = Ext.create('Ext.form.field.ComboBox', {
        id: 'cmb_start_time',
        x: 20,
        y: 180,
        width: 180,

我们添加对项目的引用:

this.items = [
    {
        xtype: 'form',
        height: 608,
        width: 498,
        layout: 'absolute',
        bodyPadding: 10,
        title: '',
        items: [
            firstComboBox,

点击按钮后,我们可以使用参考:

listeners: {
    click: function(){
        console.log(firstComboBox.getValue());
        console.log(secondComboBox.getValue());
    }
}