Как ссылаться на объект контейнера-предка из элемента управления ExtJS?

Я использую ExtJS для создания окна, содержащего несколько панелей в качестве элементов. Одна из этих панелей содержит кнопку.

Я хочу прикрепить обработчик к моей кнопке, чтобы при нажатии кнопки я мог скрыть окно, содержащее вышеупомянутые панели и эту кнопку.

У меня вопрос: как я могу получить ссылку на родительское окно моей кнопки БЕЗ ссылки на окно по идентификатору? Мне буквально нужна ссылка на экземпляр Ext.Window, а не на экземпляр Ext.Panel, содержащий мою кнопку.

Примечание: я не хочу ссылаться на окно по идентификатору, потому что я создаю подкласс класса Ext.Window и, следовательно, идентификатор окна не всегда будет одинаковым. Короче говоря, я создаю класс мастера, и когда я нажимаю кнопку «Отмена» мастера, я хочу скрыть окно мастера, содержащее эту кнопку.

Вот мой код:

var newWizardWindow = new WizardWindow({
  id: 'newWizardWindow',
  title: 'New',
  items: [
    ...
  ],   
  buttons: [{
    text: 'Cancel',
    handler: function() {
      // REFERENCE WizardWindow instance here.
    }
  },{
    id: 'newWizardPreviousButton',
    text: '« Previous',
    disabled: true,
    handler: newWizardNavigator.createDelegate(this, [-1])
  },{
    id: 'newWizardNextButton',
    text: 'Next »',
    handler: newWizardNavigator.createDelegate(this, [1])
  }],
  listeners: {
    …
  }
});

Вот некоторые идеи, которые я придумал что касается того, как скрыть окно:

  1. this.ownerCt.ownerCt (это кнопка). Неблагоприятно, так как в будущем обновлении ExtJS количество родителей между окном и кнопкой может измениться.
  2. Каким-то образом сохранить ссылку на экземпляр WizardWindow в классе WizardWindow.
  3. Найдите ближайший класс WizardWindow [CSS] в стиле jQuery: $ (this) .closest ('. WizardWindow'). Может быть this.findByParentType ('WizardWindow')?
11
задан Chad Johnson 13 May 2011 в 03:12
поделиться