2014-12-02 3 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 ('идентификатор') getForm()..

Как получить объект icon-p по его имени, показать, что я могу скрыть или показать эту иконку.

+1

Вы пытаетесь получить доступ к объекту icon-p из обработчика onPClick? – cpastore84

ответ

0

В обработчике onPClick вы получаете ссылку на компонент в первом параметре.
Где-то в вашем контроллере вы имеете функцию обработчика

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

При назначении 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 
} 
+0

onPЩелкните, могу ли я получить значок-n объекта. Причина в том, что я хочу скрыть/показать следующий предыдущий значок? –

+0

icon-n-Component возвращает null, поскольку я не устанавливаю id для следующего значка, и я не хочу добавлять id к нему. Можем ли мы получить этот объект с помощью значков? –

+0

Почему вы не хотите устанавливать itemId для компонента icon-n? Один и тот же значок можно использовать несколько раз в разных контейнерах для идентификации компонента. –

0

Вы можете присвоить идентификатор для элемента и использовать 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 - это всего лишь операция с картой, поэтому она дешевая. Причина, по которой предлагается не использовать идентификаторы, заключается в том, что она может стать запутанной, когда ваше приложение вырастет до разумного размера. Что произойдет, если вы начнете создавать несколько экземпляров панели выше? –

Смежные вопросы