2015-04-22 5 views
0

У меня есть вкладка, где вы можете нажать кнопку, чтобы создать новые вкладки. Когда кнопка нажимается, она создает новую вкладку, но не возникает, но когда я вызываю setActiveTab, она ничего не делает. Когда я перешагнул его в Chrome, я вижу, что он фактически меняет вкладку на указанную, но затем переключает ее обратно на оригинал. Любая помощь будет большой. Вот код:ExtJS TabPanel SetActiveTab Возврат к 0

управления Tab:

{ 
       xtype:'tabpanel', 
       itemId:'tabctr1', 
       width:785, 
       hidden:true, 
       items:[ 
        { iconCls: 'btn-NewTab', tabConfig: { listeners: { click: btnAddSensor_Click } } } 
       ] 
      } 

Нажмите Событие:

function btnAddSensor_Click(sender,e,eOpts) 
{ 
//Local Variable Declaration 
var parent = sender.up('tabpanel'); 

if (parent !== null && parent !== undefined) 
{ 
    var newTab = parent.add({ 
     title: parent.items.length, 
     layout: 'vbox', 
     width:785, 
     margin:'5 0 0 0', 
     items:[ 

       ] 
      } 
     ] 
    }); 

    parent.setActiveTab(newTab); 
} 
} 

ответ

0

Это appaers быть вопрос времени, и я был в состоянии решить с помощью:

Ext.Function.defer(function(p){ p.setActiveTab((parent.items.getCount()-1)); }, 1000, this, [parent]); 
0

Проблема в вашей первой вкладке - это, по сути, кнопка ... Я не совсем уверен, почему это проблема, но она работает, если вы установите ее как кнопка. Взгляните на мой Fiddle. И соответствующий код:

var parent = Ext.create('Ext.tab.Panel', { 
    width: 785, 
    height: 400, 
    buttons: [{ 
    text: 'Add Tab', 
    listeners: { 
     click: btnAddSensor_Click 
    } 
    }] 
}); 
function btnAddSensor_Click(sender,e,eOpts) {    
    if (parent !== null && parent !== undefined) { 
    var newTab = parent.add({ 
     title: parent.items.length, 
     layout: 'vbox', 
     margin:'5 0 0 0', 
     items: [{ 
     xtype: 'button', 
     text: 'hello ' + parent.items.length 
     }] 
    }); 

    parent.setActiveTab(newTab); 
    } 
} 

И я думаю, что я только что понял, почему этот вопрос есть ... при нажатии на вкладку, чтобы добавить новую вкладку, Ext хочет, чтобы убедиться, вкладка щелкнул устанавливаются, так он стреляет setActiveTab, но вы также вызываете setActiveTab в свою функцию щелчка, поэтому он по существу уволен дважды ... это означает, что ваш программный путь вызывается первым, поэтому он проигрывает.

Смежные вопросы