2014-12-02 75 views
0

我有這樣一個觀點:如何通過名稱獲取組件的對象?

tbar: [ 
     { 
      iconCls:'icon-p', 
      hidden: true, 
      name:'p', 
      handler:'onPClick' 
     }, 
     { 
      xtype: 'tbfill' 
     }, 
     { 
      iconCls:'icon-n', 
      hidden:true, 
      name: 'n', 
      handler:'onNClick' 
     } 
    ], 

    initComponent: function(){ 
     Ext.apply(this, { 
     layout: 'fit', 
     items: [ 
      { 
      xtype:'textareafield', 
      name: 'name_content' 
      } 
     ] 
     }); 
     this.callParent(); 
    } 

OnPClick我做form.up( 'ID')getForm()。

如何用它的名字表明,我可以隱藏或顯示該圖標得到圖標-p的對象。

+1

您是否嘗試從onPClick處理程序中訪問icon-p對象? – cpastore84 2014-12-02 19:25:56

回答

0

在onPClick處理程序中,您將獲得對第一個參數中組件的引用。
某處在您的控制器必須處理函數

onPClick : function(icon-p-object){ 
    // do some stuff with the icon-p-object 
} 

當你分配一個的itemId圖標-N對象,那麼你就可以輕鬆搞定的參考,當 你的follwoing你onPClick處理

var parentComponent = icon-p-object.up(); // now we have the reference to the parent container 
var icon-n-Component = parentComponent.down('#icon-n'); // and with that we can get the other reference of the child element 

完整的代碼應該是

onPClick : function(icon-p-object){ 
    var parentComponent = icon-p-object.up(); 
    var icon-n-Component = parentComponent.down('#icon-n'); 
    // do some stuff with the icon-n object 
} 
+0

onPClick可以得到icon-n對象原因是我想隱藏/顯示下一個上一個圖標? – 2014-12-03 03:32:57

+0

icon-n-Component返回null,因爲我沒有爲下一個圖標設置id,而且我也不想爲它添加id。是否可以通過iconCls獲取此對象? – 2014-12-03 08:22:24

+0

爲什麼你不想爲icon-n組件設置itemId?相同的iconId可以在不同的容器中多次使用以識別組件。 – 2014-12-03 08:25:28

0

您可以將ID分配給項目和使用Ext.getCmp( 'ID')來引用它

{ 
     iconCls:'icon-p', 
     hidden: true, 
     name:'p', 
     handler:'onPClick', 
     id: 'p_id' 
    }, 

顯示它

Ext.getCmp('p_id').show(); 

隱藏它

Ext.getCmp('p_id').hide(); 

我聽過有人說爲項目分配'id'可能效率不高(不知道爲什麼?),但這是測試你所嘗試的好方法去完成。也許你可以找到更好的方法,但這應該起作用。

+2

按id查找只是一個地圖操作,所以它很便宜。建議不使用ID的原因是,一旦您的應用程序增長到任何合理的大小,它可能會變得複雜。當你開始創建面板的多個實例時會發生什麼? – 2014-12-02 19:36:54