2016-08-29 3 views
0

Я объясню эту проблему на примере: Есть две панели P1 & P2 (плавающий). Я назначил P1 как showBy P2 . Теперь, когда я уничтожаю/скрываю P1, тогда в идеале P2 должен быть скрыт. Но в этом случае P2 показывается. Есть ли способ, которым я могу автоматически скрыть этот P2, когда P1 будет скрыт/уничтожен.ExtJS (5.0): Скрыть/уничтожить плавающую панель, когда ее отображение по цели будет скрыто/уничтожено

+1

'p1.on ('destroy', p2.hide, p2);' ...? – Emissary

ответ

0

Я создал компонент, который выполняет именно это: если вы предоставите ему конфигурацию «callWindow», то будет вызвано вызывающее окно showBy, и если вызывающее окно закрыто, оно также закрывается. Если вы не предоставите его с callingWindow конфигурации, он действует как обычное окно:

Ext.define('MyComponent',{ 
    extend:'Ext.window.Window', 
    initComponent:function() { 
     var me = this, 
      win = me.callingWindow; 
     Ext.apply(me,{ 
      ... 
     }); 
     me.callParent(arguments); 
     if(win) { 
      win.on('beforeclose',function() { 
       if(me) me.close(); 
      }); 
      me.showBy(win,'tl-tr'); 
     } 
     else me.show(); 
    }, 
}); 

Я использую это так:

xtype:'button' 
handler:function(button) { 
    Ext.create('MyComponent',{ 
     callingWindow:button.up('window') 
    }); 
} 
1

Я бы, как предложил Эмиссар.

Добавить слушателя в p1, чтобы скрыть p2, когда p1 будет уничтожен или скрыт.

p1.on('destroy', p2.hide, p2); 
p1.on('hide', p2.hide, p2); 
Смежные вопросы