在使用TabPanel时,有时候可能会遇到这样的情况,tab打开再关闭后会出错。这是因为tab默认关闭的方式是'close',这样会销毁(destroy)tab的控件,如果你将panel或其他控件的定义放在onReady之外,定义的方法如:new Panel({..})就不会被执行,会出现空引用错误,而在onReady之内就会将实例化的方法再执行。

    要控制tab的开关,先要了解这几个方法:

    void unhideTabStripItem(index/id/item) 显示tab(只显示header)

    void hideTabStripItem(index/id/item)    隐藏tab(只隐藏header)

    void show()  显示tab(只显示body)

    void hide()  隐藏tab(只隐藏body)

    例子:

  //显示, 放在按钮事件处理 或 树节点击事件中

  var tabs=new TabPanel({..});

  var newPanel=new Panel({id:'myPanel',title:'hello',closable:true,html:'hello'});

  var myPanel=tabs.getItem('myPanel');

  if(myPanel==null){
    tabs.add(myPanel).show()
   }
   else{
    tabs.unhideTabStripItem(myPanel.show());
   }

  //关闭

  tabs.on('beforeremove', function(tabs, tab) {
    tabs.hideTabStripItem(tab.hide());
    return false;
  });