2011-09-29 47 views
2

在我的應用程序中,第一頁顯示底部的tabPanel。但標籤數量,標籤和圖標是來自json請求的動態內容。我想知道如何去做。這是我的嘗試。Sencha使用動態JSON數據觸摸tabPanel

TMDemo = new Ext.Application({ 
name: 'TMDemo', 
launch: function(){ 
    this.views.mainTabBar = new this.views.MainTabBar(); 

} 

});

TMDemo.views.MainTabBar = Ext.extend(Ext.TabPanel,{ 
fullscreen: true, 
tabBar:{ 
    dock:'bottom', 
    layout:{ 
     pack:'center' 
    } 
}, 
addItems: function(){ 
     this.add(addItemsBasedOnJsonData()); 
     this.doLayout(); // important 
}, 
listeners: { 
    beforerender:function(){ 
     Ext.util.JSONP.request({ 
     url: 'app/data/tabbar.json', 
     callbackKey: 'callback', 
     callback: function(result) { 
     console.log("Inside callback");  
     TMDemo.tabBarData = result;        
     } 
    }); 
} 
    render: function(){ 
     console.log("Inside render"); 
     this.addItems(); 
    } 
} 

});

此處tabbar數據來自tabbar.json(虛擬數據實際將是某個URL)。我通過addItemsBasedOnJsonData()函數將項目添加到此Tabpanel中,該函數將創建選項卡項並返回數組。 但問題是渲染事件總是先觸發然後JSON請求回調,所以沒有jsondata可用於動態創建選項卡。 請指導我正確的方向。這種方法是否正確。我可以有任何示例來尋找。

塔倫

回答

0

你有沒有嘗試過這樣的:添加項目後

callback: function(result) { 
     console.log("Inside callback");  
     TMDemo.tabBarData = result; 
     TMDemo.views.mainTabBar.add(TMDemo.views.mainTabBar.addItemsBasedOnJsonData()); 

} 
+0

我用的doLayout呼叫嘗試這樣做。標籤欄數據可用,但標籤不能正確呈現,我的意思是CSS是搞砸了。 –

+0

你是怎麼做doLayout的?我可以看到代碼嗎? – Luis

+0

也有你試過:doComponentLayout() – Luis