2014-12-02 74 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