4

dijit.layout._LayoutWidget、dijit._Container、および dijit._Templated から継承するテンプレート化されたカスタム ウィジェットがあります。これにより、ウィジェットにサイズ変更などのネイティブ ウィジェット サポートが提供されます。必要なのは、ウィジェットのサイズに合わせたサイズの 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>

すべて問題ないように見えますが、奇妙な TabList が表示されます。これは私が得るものです!

問題を調べました。ウィジェットと TabContainer のすべての部分に正しい幅と高さの値があります。タブリストのみが長い幅 (50'000 ピクセル幅) です: http://bugs.dojotoolkit.org/ticket/10495のような同様の問題について読んだことがありますが、私の場合、すべての要素が正しいです幅と長さ。tablist がこの長い幅を取得する方法がわかりません。

style="width:100%;height:100;" を追加および削除する多くの方法も試しました。親コンテナとその親の場合。しかし、どの構成も問題を解決しませんでした。

この問題を解決する方法はありますか?

4

4 に答える 4

3

誰かが解決策を探している場合に備えて、私は同じ問題を抱えていて、この質問に来ました. バグレポートを見ましたが、私の場合は当てはまりませんでした.tabcontainerをテーブル内に埋め込んだり、doLayoutをfalseに設定したりしていませんでした。tabcontroller を設定しようとしましたが、それもうまくいきませんでした。最後に、デバッグ後、ウィジェットに「サイズ変更」メソッドを提供し、次の方法でその内部のタブコンテナのサイズを変更する必要があることがわかりました

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 
}

});

お役に立てれば

于 2011-09-23T04:16:17.470 に答える
1

TabContainer に属性を追加してみてください:

<div dojoType="dijit.layout.TabContainer" controllerWidget="dijit.layout.TabController" ... >

http://bugs.dojotoolkit.org/ticket/10113#comment:11

于 2011-08-23T15:04:46.633 に答える
0

最初のものを削除したい場合:「useMenu : false」 2番目と3番目のものを削除したい場合:「useSlider : false」

于 2016-06-06T13:04:57.877 に答える
0

css を次のように書き換えるだけです。

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

@-moz-document url-prefix() {
  div[class="dijitTabListWrapper dijitTabContainerTopNone dijitAlignClient"]{
    height: 31px !important;
  }
}
于 2013-04-25T12:32:10.930 に答える