繁体   English   中英

DOJO TabContainer containerNode高度为0px

[英]DOJO TabContainer containerNode height is 0px

我正在以编程方式创建DOJO TabContainer和ContentPanes添加到该tabContainer。 每个contentPanes都包含我的自定义小部件。 一些代码如下所示。 显示选项卡时,第一个选项卡上的containerNode的高度为0px,即使第一个选项卡具有已完全加载的小部件,也不会在浏览器中显示。 这曾经在1.6中可以正常工作。 我已经将dojo 1.6替换为1.9.3,并遇到了这个问题。 有任何想法吗?

    var availableWidgets = { 
'Name': {title: 'Name', widget:'test.ui.NameWidget'},
'Stats':    {title: 'Stats', widget:'test.ui.StatsWidget'}

};

postCreate: function(){ 
var tabContainer = new dijit.layout.TabContainer({controllerWidget: "dijit.layout.TabController"}, this.pContainerDiv);                     
tabContainer.set('class', 'claro');
tabContainer.set('doLayout', false);
tabContainer.set('style', "width: 100%; height: 100%;"); 

dojo.forEach(this.menuItems, dojo.hitch(this, function(menuItem, index){
    var widgetInfo = availableWidgets[menuItem];
if(widgetInfo != null){
    var contentPaneId = portletNamespace + pContext.persistentId + menuItem + 'ContentPane';

    var contentPane = new dijit.layout.ContentPane({
    id: contentPaneId,
            title: widgetInfo.title,
    selected: currentSelectedItem == menuItem,
    closable: false,
    style: 'height:100%;padding: 15px;',
    onShow: dojo.hitch(this, function(){                               
       //can no longer do this in 1.9
       //dojo.require(widgetInfo.widget);                             
       if (widgetInfo.widget == 'test.ui.NameWidget') {
           dojo.require("test.ui.NameWidget");
       } else if (widgetInfo.widget == 'test.ui.StatsWidget') {
           dojo.require("test.ui.StatsWidget");
       } 

       var currentView = this.widgets[widgetInfo.title];
       if(!currentView){
           currentView = eval('new ' + widgetInfo.widget + '(this.params)');
           currentView.placeAt(contentPaneId, 'last'); 

           // startup called by (dijit/_WidgetBase in 1.9.3) by placeAt above
           // currentView.startup(); 

           this.widgets[widgetInfo.title] = currentView;                                    
           }                                
            })
    });                   
        tabContainer.addChild(contentPane);
    }
}));

}

添加小部件后,我将尝试在contentpane上调用.resize()。 那应该正确地调整内容窗格的大小。 另一个选择是在将子级添加到contentPane之后,通常在tabcontainer上调用.resize()。

我有个解决办法。 在将内容窗格添加到选项卡容器之前,我现在调用:

tabContainer.startup();

使用dojo 1.6时,是在将所有内容窗格添加到选项卡容器之后执行此操作。 之前调用此选项可解决高度问题,并使用dojo 1.9.3正确渲染所有选项卡。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM