2011-09-29 49 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