Extjs 4 Как получить идентификатор родительского компонента? - PullRequest
9 голосов
/ 14 июля 2011

У меня есть несколько полей. И есть кнопка внутри каждого набора полей в Extjs 4. Я хочу получить идентификатор набора полей для события нажатия кнопки, чтобы узнать, из какого набора полей была нажата кнопка

Как мне это получить?

    {
     xtype:'fieldset',
     id:'fs1',
     items:[{
     xtype:'button',
     id:'b1',
     handler:function(){
       // here i want to get fieldset's id because because fieldset and button were added dynamically.
      }
     }]
    }

Спасибо, Кунал

  Actual Code:

  Ext.define('My.Group',{   
xtype : 'fieldset',
 config: {
     title:'Group' + i.toString(),
     id : '_group' + i.toString()       
 },
     constructor: function(config) {
     this.initConfig(config);

   return this;
 },

collapsible : true,
frame : false,
boder : false,
items : [ {
xtype : 'button',
text : 'Add KeyWord',
id: 'btn',
width : 100,
handler : function(button,event) {

     var fieldset = button.findParentByType('fieldset');
     var fieldsetsID = fieldset.getId();

    console.log(fieldset);

    Ext.getCmp(fieldsetId).insert(2, rangeField);
    Ext.getCmp(fieldsetsID).doLayout();
}

 }, {
 xtype : 'button',
 text : 'Add Range Type',
 width : 100
} ]
});

и я вызываю эту функцию при нажатии кнопки

 handler : function() {
        i=i+1;
        var group = new My.Group({
            title:'Group' + i.toString(),
            id : '_group' + i.toString()                
        });

        console.log(group);
        Ext.getCmp('_aspanel').insert(i, group);                
        Ext.getCmp('_aspanel').doLayout();  

Ответы [ 2 ]

22 голосов
/ 16 июля 2011

Я правильно реализовал обработчик . { xtype:'fieldset', id:'fs1', items:[{ xtype:'button', id:'b1', handler:function(btn){ // Retrieve fieldset. <b> var fieldset = btn.up('fieldset');</b> // Retrieve Id of fieldset. <b>var fieldsetId = fieldset.getId();</b> } }] }

В этом случае попробуйте следующее: <b>button.up("[xtype='fieldset']")</b>

5 голосов
/ 16 июля 2011
Ext.onReady(function() {
  var panel = Ext.create('Ext.panel.Panel', {
      items:  {
        xtype:'fieldset',
        id:'fs1',
        items:[{
          xtype:'button',
          id:'b1',
          handler:function(b,e){
            var fieldset = b.findParentByType('fieldset');
            var fieldsetID = fieldset.getId();
            console.log(fieldsetID);
          }
        }]
      },
      renderTo: document.body
  });
});

Обратите внимание: если у вас есть переменная fieldset, вы можете добавлять элементы в этот контейнер напрямую, без необходимости использовать его идентификатор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...