在对于变量使用还有些疑问,现在想继承一个组件,在按钮中处理这个新组件的属性,可是总是遇到 undefined  实在是对变量作用域掌握的不透彻啊,希望大家帮帮忙吧。  怎么能在这个handler中得到myflag的值呢?Ext.MyPanel=Ext.extend(Ext.Panel ,{       
    title:"My Panel",
    myflag: 0, 
    buttons  : [new Ext.Button({
                       text : 'button',
                       handler : function(button) {
                                  var b = myflag;
                                  b = b + 1;
                                  ...........
                               },
                       scope : this
           })]
});
Ext.reg('mypanel', Ext.MyPanel); Ext.onReady(function(){
    new Ext.MyPanel( {myflag : 2}).render(Ext.getBody());
    
});

解决方案 »

  1.   

      用this.myflag   +分
      

  2.   

    搞定,结贴,同时给大家参考一下解决办法吧。 Ext.MyPanel=Ext.extend(Ext.Panel ,{          
        title:"My Panel",   
        myflag:"tetttttetttttt",    
        constructor : function(config){   
           config = config || {};          
           config.buttons  = [   
               new Ext.Button({   
                  text : 'button',   
                  handler : function(button) {   
                         var b = this.myflag;   
                         b = b + "1";   
                         ...........                        
                  },   
                  scope : this  
               })   
             ];   
            Ext.MyPanel.superclass.constructor.call(this, config);   
         }         
    });   
    Ext.reg('mypanel', Ext.MyPanel);    
    Ext.onReady(function(){   
     new Ext.MyPanel( {myflag : 'something' }).render(Ext.getBody());   
    });  
      

  3.   

    无意中看到这个老帖子,呵呵.可以试下我下面这个方式解决:Ext.MyPanel=Ext.extend(Ext.Panel ,{          
        title:"My Panel",   
        initComponent:function(){
         buttons=[new Ext.Button({
         text:'button',
         handler:function(button){
         var b=myflag;
         b=b+1;
         }
         })];
         Ext.MyPanel.superclass.initComponent.call(this);
        }
    });
     
    Ext.reg('mypanel', Ext.MyPanel);    
    Ext.onReady(function(){   
     new Ext.MyPanel( {myflag : 'something' }).render(Ext.getBody());   
    });