この単純なフィドルを見てください:
http://jsfiddle.net/mercmobily/y4uG2/10/
基本的に、ウィジェットを宣言し、サブウィジェットの追加を開始します。ある時点で、タブコンテナとサブタブを備えたテンプレートウィジェットであるサブウィジェット「セクション」があります。
メインウィジェットには次のものがあります。
'<div data-dojo-type="Section" data-dojo-props="title: \'Sub Widget\'" data-dojo-attach-point="section"></div>' +
そして、その「セクション」ウィジェットには次のものがあります。
templateString: '' +
' <div>' +
' <div class="subWidget" data-dojo-type="dijit.layout.TabContainer" tabPosition: \'left-h\'" dojo-attach-point="tabCont" >' +
' <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="title: \'Second Widget one\'">Second Widget One</div>' +
' <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="title: \'Second Widget Two\'">Section Widget Two</div>' +
' </div>'+
' </div>'
現在、サブウィジェット「セクション」を適切にレンダリングするのに少し苦労しています。今の私の実際のプログラムでは、次のように遊んでいました。
- doTemplate
- CSSの高さ属性
- メインウィジェットからresize()をキャッチし、サブウィジェットでresize()を呼び出します
(ポイント(3)について、私は次のようなことをしなければなりませんでした:
サイズ変更:function(){this.inherited(arguments); console.log( "呼び出されたメインウィジェットでサイズ変更!"); this.settingsTab.resize(); }
この時点で、私は気が狂ってしまいます。したがって、質問:メインウィジェットをインスタンス化するときに、フィドルでサブウィジェットがレンダリングされることを確認するための、受け入れられている通常の一般的な方法は何ですか?
さらに、これまでに使用したすべてのタブコンテナに対してheight:100%を指定する必要がありますか?(それのように見えます)
ありがとうございました!
アップデート
フィドルを更新しました。この時点で、タブコンテナに「高さ」を追加しました。その後、ブラウザウィンドウのサイズを変更すると、実際にトリックが実行されます(!)。なぜそこにその高さが必要なのかはよくわかりませんが、大丈夫です。
http://jsfiddle.net/mercmobily/y4uG2/16/
また、ユーザーが「壊れた」ウィジェットをクリックしたときにon()を実行し、-推測して-サイズ変更が実行され、正常にレンダリングされます。
これはさらに意味がありません。自分のウィジェットがテンプレート内で定義されているものと異なる動作をするのはなぜですか?私はいろいろな理論を始めました。たとえば、高さは表示されないため計算できません。ただし、同じことが、左側に「複雑」とラベル付けされたサブタブのある他のタブにも適用されます。
私は考えが足りません。いいえ、本当に。