2011-03-25 86 views
1

我已經能夠將工具放入窗口標題欄中,但希望能夠對Panel執行相同的操作。ExtJS:將工具放到標題欄上

這是我的嘗試:

panel = new Ext.Panel({ 
    id: 'my_panel', 
    region: 'west', 
    title:'MyTitle', 
    iconCls:'helpIcon', 
    initComponent:function(){ 
     var config = { 
      tools:[{ 
       id: 'gear', 
       handler: function(){...} 
      }] 
     }; 
     Ext.apply(this, config); 
     Ext.apply(this.initialConfig, config);   
     Ext.Panel.superclass.initComponent.apply(this, arguments); 
    }   
} 

一些建議,將不勝感激

JJ

回答

1

以前的帖子是正確的,但我想我會解釋爲什麼你在做什麼是錯的。

你完全重新定義的Ext.PanelinitComponent方法正在創建的對象,默認Ext.Panel.initComponent需要爲了像tools運行設置的東西。

在您的代碼中,當您撥打Ext.Panel.superclass.initComponent時,您打電話給Ext.BoxComponent.initComponent,而不是現有的Ext.Panel.initComponent

爲了做特殊initComponent的事情,然後調用高達Ext.Panel.initComponent,你需要創建的Ext.Panel擴展:後來

MyPanelClass = Ext.extend(Ext.Panel, { 
    id: 'my_panel', 
    region: 'west', 
    title:'MyTitle', 
    iconCls:'helpIcon', 
    initComponent:function(){ 
     var config = { 
      tools:[{ 
       id: 'gear', 
       handler: function(){...} 
      }] 
     }; 
     Ext.apply(this, config); 
     Ext.apply(this.initialConfig, config);   
     MyPanelClass.superclass.initComponent.apply(this, arguments); 
    } 

}); 

然後:

var mypanel = new MyPanelClass(); 
+0

是的,但..在這種情況下,一個子類絕對是過分的,並且看起來不是OP的意圖。只需將工具添加爲由其他人發佈的配置項目,並且不會損壞initComponent。 – 2011-03-26 03:56:19

+0

感謝您的評論,這只是一段代碼的完整上下文的抽象,這是我正在尋找的,所以謝謝! – neolaser 2011-03-27 22:40:59

0

你幾乎沒有。

panel = new Ext.Panel({ 
    id: 'my_panel', 
    region: 'west', 
    title:'MyTitle', 
    iconCls:'helpIcon', 
    tools:[{ 
     id: 'gear', 
     handler: function(){...} 
    }] 
}; 
1

您似乎已經混淆了代碼中的許多內容。您似乎試圖擴展面板並使用region屬性。 region屬性用於邊框佈局。

這裏是如何:

panel = new Ext.Panel({ 
    id: 'my_panel', 
    title:'MyTitle', 
    iconCls:'helpIcon', 
    tools:[{   
     id: 'gear', 
     handler: function(){...}  
    }] 
}); 

如果需要延長,你將不得不使用Ext.extend()方法。