在 Controller 中的 MVC 应用程序中,我具有以下功能,可以将新选项卡添加并聚焦到 TabPanel,其中包含 DataView:
show_gallery: function(view, record, item, index, e, opts) {
var tabb = Ext.ComponentQuery.query('.gallery_panel');
var gallery_view = Ext.widget('gallery_view');
var ImageStore = Ext.create('Gallery.store.Images');
ImageStore.load({url: 'myphoto/index.php/api/feed/json/' + record.data.uuid});
Ext.apply(gallery_view, {
title: record.data.name,
id: record.data.uuid,
closable:true,
store: ImageStore
});
if (tabb[0].down('#' + record.data.uuid)) {
console.log('Entered IF');
//tabb[0].setActiveTab(tabb[0].down('#' + record.data.uuid));
tabb[0].setActiveTab(record.data.uuid);
}else{
console.log('Entered ELSE');
tabb[0].add(gallery_view);
if (Ext.getCmp(record.data.uuid)) {
console.log('THERE IS SUCH UUID');
}
//tabb[0].setActiveTab(gallery_view);
}
},
问题出在最后一行。当我取消注释 tabb[0].setActiveTab(gallery_view) 时,新选项卡已聚焦但为空,如果我离开该行已注释,则带有 dataView 的新选项卡将填充数据但未聚焦。我真的不知道为什么 setActiveTab() 会导致 DataView 根本不显示。gallery_view 小部件是 Ext.view.View 扩展。