Extjs 如何通过名称获取组件的对象?

Extjs 如何通过名称获取组件的对象?,extjs,Extjs,我的观点是: tbar: [ { iconCls:'icon-p', hidden: true, name:'p', handler:'onPClick' }, { xtype: 'tbfill' }, { iconCls:'icon-n', hidd

我的观点是:

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


如何通过名称获取icon-p的对象显示我可以隐藏或显示该图标。

您可以为该项目分配一个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”可能效率低下,不知道为什么?但这是一个很好的方法来测试你想要完成什么。也许您可以找到更好的方法,但这应该会起作用。

在onPClick处理程序中,您可以在第一个参数中获得对组件的引用。 在控制器中的某个地方,您具有处理函数

onPClick : function(icon-p-object){
  // do some stuff with the icon-p-object
}
当您为icon-n对象分配itemId时,您可以在 在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
}

您是否正在尝试从onPClick处理程序中访问icon-p对象?按id查找只是一个映射操作,因此很便宜。建议不要使用ID的原因是,一旦你的应用增长到任何合理的大小,它就会变得复杂。当您开始创建上面面板的多个实例时会发生什么情况?onPClick我可以获取icon-n对象吗?原因是我想隐藏/显示下一个上一个图标?icon-n-Component返回null,因为我没有为下一个图标设置id,也不想向其添加id。我们可以通过iconCls获取此对象吗?为什么您不想为其设置itemId图标-n组件?同一iconId可以在不同的容器中多次使用以标识组件。如果包含视图被多个视图调用,它将给出重复的Id错误。使用itemId后,其工作正常,因为其范围在类内。谢谢你的解决方案