javascript和extJs - 范围问题

时间:2010-04-06 12:01:13

标签: javascript

我与一些js代码有一个与范围相关的问题,也许有人可以向我解释我做错了什么:

我正在使用extJs并获得了这个片段:

Ext.onReady(function(){

 // Form for filter selection
 var formFilter = new Ext.FormPanel({
  // ...
        items: [
   cbGroup = new Ext.form.ComboBox({    
                fieldLabel: 'Group',
    store: dsGroups,
    displayField: 'name',
    valueField: 'number',
    emptyText : '- Please choose a group -',
    listeners:{
      'select': function() {
       alert(cbGroup.selectedIndex +' '+this.selectedIndex);
      }
     }
    })
   ]
    }); 
});

问题: 当我在侦听器函数中通过'this'访问组合框时,我得到了selectIndex属性的正确结果。 当我通过它的var名称访问组合框时,我总是得到结果'-1'。 非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

快速而肮脏:

Ext.onReady(function(){
    var self = this;
    ...
    alert(cbGroup.selectedIndex +' '+self.selectedIndex);

答案 1 :(得分:0)

尝试在设置对象后添加侦听器。所以:

Ext.onReady(function(){
 // Group Combobox:
 var cbGroup = {};
 // Form for filter selection
 var formFilter = new Ext.FormPanel({
  // ...
        items: [
   cbGroup = new Ext.form.ComboBox({    
                fieldLabel: 'Group',
    store: dsGroups,
    displayField: 'name',
    valueField: 'number',
    emptyText : '- Please choose a group -',
    })
   ]
    });
 cbGroup.on('select',function() {
       alert(cbGroup.selectedIndex +' '+this.selectedIndex);
      });
});