2012-06-11 78 views
0

4數據視圖在控制我的MVC應用程序中我有以下功能與數據視圖中添加和重點新標籤中的TabPanel:的ExtJS裏面的TabPanel

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擴展。

回答

1

我不知道怎麼來的你如果沒有setActiveTab數據視圖,但似乎有一些問題與此代碼:創建具有Ext.widget一個新的widget

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 
}); 

優先( ),然後用Ext.apply()覆蓋一些配置選項。就我的理解而言,後者適用於基元,但不適用於對象/數組。

一般來說,configs的目的是告訴構造函數如何初始化該類的特定實例。通過Ext.apply()對象的標題的更改可以工作,如果對象是尚未呈現,但不能改變的存儲配置(基於結構組件可能開始聽各種存儲事件,這將不是由發生簡單的Ext.apply()只將配置從一個對象複製到另一個對象 - 你已經錯過了一個組件,只要聽商店事件就可以創建組件)。

請改爲嘗試這個辦法:

var ImageStore = Ext.create('Gallery.store.Images'); 
ImageStore.load({url: 'myphoto/index.php/api/feed/json/' + record.data.uuid}); 

var gallery_view = Ext.widget('gallery_view', { 
    title: record.data.name, 
    id: record.data.uuid, 
    closable:true, 
    store: ImageStore 
}); 
+0

這正是問題。現在它按預期工作(數據填充+重點)。非常感謝! – patryks