2010-09-18 1 views
0

По какой-то причине Ext.Panel.getTopToolbar() возвращает массив объектов (элементы панели инструментов, но NOT самой панели инструментов), а не Ext.Toolbar. Из-за этого я не могу скрыть уже установленную панель инструментов. Как мне продолжить?Как скрыть верхнюю панель инструментов Ext.Panel? (ExtJS 2.0)

Пример кода:

function (panel) 
{ 
    alert(panel.getTopToolbar()); // displays the list of elements in the toolbar 
    panel.getTopToolbar().hide(); // error: "hide" is not a function 
} 

ответ

0

Он должен работать, так что это звучит как, возможно, вы использовали topToolbar в качестве конфигурации вместо использования tbar в конфиге? Если вы установите конфигурацию tbar, она будет создана и сохранена как topToolbar, которая является экземпляром Ext.Toolbar, выставленным getTopToolbar(). Если вы перенесите topToolbar прямо, вы можете увидеть эту проблему.

Вы можете найти этот блок кода в Panel.onRender (вы должны включить этот файл напрямую) и установить контрольную точку в Firebug, чтобы увидеть, что происходит:

if(this.tbar && this.topToolbar){ 
     if(this.topToolbar instanceof Array){ 
      this.topToolbar = new Ext.Toolbar(this.topToolbar); 
     } 
     this.topToolbar.render(this.tbar); 
    } 
+0

Не совсем. Я установил tbar при создании экземпляра Exp.Panel. Вы имеете в виду то, что происходит, можно объяснить, если panel.topToolbar был установлен в массив? –

+0

Вам нужно использовать Firebug и выяснить, что именно возвращает panel.getTopToolbar(). Мне не догадаться. По умолчанию ваш код должен работать, поэтому что-то должно происходить за пределами того, что вы опубликовали. –

0
panel.getTopToolbar().setVisible(false);
+0

Вы должны добавить объяснение, почему вы думаете, что это помогает. – Miguel

0

В 4.2.1, что работает меня:

  var topToolbar = Ext.create('Ext.toolbar.Toolbar', { 
       dock: 'top', 
       width: 'auto', 
       id: 'mytoolbar', 
       hidden: true, 
       items: [...] 
      }); 


      var p = Ext.create('App.view.MyCustomPanel', { 
       html: 'test', 
      }); 

      if (userCanSeeToolbar) { 
       p.addDocked(topToolbar); 
      } 

Тогда динамически я могу показать/скрыть верхнюю панель:

/* if (userCanSeeToolbar) { */ 
p.getDockedComponent('mytoolbar').show(); 
p.getDockedComponent('mytoolbar').hide();