Dojo 自定义小部件Tablist width中的Dijit Tabcontainer运行过长

Dojo 自定义小部件Tablist width中的Dijit Tabcontainer运行过长,dojo,tabcontainer,dijit.layout,Dojo,Tabcontainer,Dijit.layout,我有一个模板化的自定义小部件,它继承了dijit.layout.\u LayoutWidget、dijit.\u Container和dijit.\u模板化,这使我的小部件本机小部件支持调整大小等。我所需要的只是一个TabContainer,大小与小部件的大小一致。这是我的小部件 <div dojoAttachPoint="containerNode"> <div dojoType="dijit.layout.TabContainer" tabPosition="top

我有一个模板化的自定义小部件,它继承了dijit.layout.\u LayoutWidget、dijit.\u Container和dijit.\u模板化,这使我的小部件本机小部件支持调整大小等。我所需要的只是一个TabContainer,大小与小部件的大小一致。这是我的小部件

<div dojoAttachPoint="containerNode">
    <div dojoType="dijit.layout.TabContainer" tabPosition="top" style="width:100%;height:100%" >
    <div dojoType="dijit.layout.ContentPane" title="tab" selected="true">
    hello
    </div>
</div>
</div>

你好
一切看起来都很好,但我有一个奇怪的小报作家

我调查了这个问题。小部件和TabContainer的所有部分都具有正确的宽度和高度值。只有小报作者有一个长宽(50000像素宽):我读过类似的问题,比如这一个:,但在我的例子中,所有元素都有正确的宽度和长度。我不知道小报作者怎么会有这么长的宽度

我还尝试了为父容器及其父容器添加和删除style=“width:100%;height:100;”的多种方法。但没有一种配置解决了这个问题


有办法解决此问题吗?

尝试向TabContainer添加属性:


为了防止有人在寻找解决方案,我也遇到了同样的问题,并提出了这个问题。虽然我查看了错误报告,但它并不适用于我的情况,我并没有将tabcontainer嵌入表中或将doLayout设置为false。我试着设置tabcontroller,但也没用。最后,调试完成后,您必须在小部件中提供“resize”方法,并按照以下方式调整小部件中的tabcontainer的大小

widgetTemplate =  '... ' + //Our tabcontainer declaration
'<div dojoAttachPoint="containerNode">' +
'<div dojoAttachPoint="widgetTab" dojoType="dijit.layout.TabContainer"' + 'style="width:100%;height:100%" >' +
'<div dojoType="dijit.layout.ContentPane" title="tab" selected="true">hello</div></div></div>' + 
'...' //Rest Of template declaration

//Since we are embedding widget inside template we need _WidgetsInTemplateMixin
dojo.declare("MyWidget", [dijit._Widget, dijit._TemplatedMixin,dijit._WidgetsInTemplateMixin], {
templateString: widgetTemplate,
.... //Rest of functions
resize: function(){
this.containerNode.widgetTab.resize() //Resize tabcontainer 
}

});
widgetTemplate='…'+//我们的集装箱声明
'' +
'' +
“你好”+
“…”//模板声明的其余部分
//因为我们将小部件嵌入到模板中,所以需要_WidgetsInTemplateMixin
declare(“MyWidget”,[dijit.\u Widget,dijit.\u TemplatedMixin,dijit.\u WidgetsInTemplateMixin]{
templateString:widgetTemplate,
..//其他函数
调整大小:函数(){
this.containerNode.widgetab.resize()//resize tabcontainer
}
});

希望这能有所帮助

只需像这样重写您的css:

div[class="dijitTabListWrapper dijitTabContainerTopNone dijitAlignClient"]{
  height: 30px !important;
}

@-moz-document url-prefix() {
  div[class="dijitTabListWrapper dijitTabContainerTopNone dijitAlignClient"]{
    height: 31px !important;
  }
}

如果要删除第一个:“useMenu:false”
如果要删除第二个和第三个选项:“UseSlaider:false”

只需说明tabPosition=“top”和“bottom”都存在问题。但是“left”和“right”看起来非常好;下面的代码工作得非常完美:tabContainer=newtabcontainer({controllerWidget:TabController,style:“height:75%;width:100%;”})这正是我想要的!谢谢分享!