2

この単純なフィドルを見てください:

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>'

現在、サブウィジェット「セクション」を適切にレンダリングするのに少し苦労しています。今の私の実際のプログラムでは、次のように遊んでいました。

  1. doTemplate
  2. CSSの高さ属性
  3. メインウィジェットからresize()をキャッチし、サブウィジェットでresize()を呼び出します

(ポイント(3)について、私は次のようなことをしなければなりませんでした:

サイズ変更:function(){this.inherited(arguments); console.log( "呼び出されたメインウィジェットでサイズ変更!"); this.settingsTab.resize(); }

この時点で、私は気が狂ってしまいます。したがって、質問:メインウィジェットをインスタンス化するときに、フィドルでサブウィジェットがレンダリングされることを確認するための、受け入れられている通常一般的な方法は何ですか?

さらに、これまでに使用したすべてのタブコンテナに対してheight:100%を指定する必要がありますか?(それのように見えます)

ありがとうございました!

アップデート

フィドルを更新しました。この時点で、タブコンテナに「高さ」を追加しました。その後、ブラウザウィンドウのサイズを変更すると、実際にトリックが実行されます(!)。なぜそこにその高さが必要なのかはよくわかりませんが、大丈夫です。

http://jsfiddle.net/mercmobily/y4uG2/16/

また、ユーザーが「壊れた」ウィジェットをクリックしたときにon()を実行し、-推測して-サイズ変更が実行され、正常にレンダリングされます。

これはさらに意味がありません。自分のウィジェットがテンプレート内で定義されているものと異なる動作をするのはなぜですか?私はいろいろな理論を始めました。たとえば、高さは表示されないため計算できません。ただし、同じことが、左側に「複雑」とラベル付けされたサブタブのある他のタブにも適用されます。

私は考えが足りません。いいえ、本当に。

4

2 に答える 2

4

Frodeが述べたように、確かにタイプミスがありますが、タブのコンテンツをに表示する場合は、タブの1つをクリックする必要がありますSubWidget

この問題を解決するのContentPaneではなく、タイプミスを修正してウィジェットをサブクラスにすることをお勧めします。これは、次のように自分自身のサイズを変更する方法を知っているためです。_WidgetBaseContentPane

declare('SubWidget', [ContentPane, _TemplatedMixin, _WidgetsInTemplateMixin], {

      templateString: ''...

http://jsfiddle.net/psoares/YwWst/を参照してください

ちなみに、widgetsInTemplate : true1.8で指定する必要はありません。追加する_WidgetsInTemplateMixinだけで十分です...

于 2012-12-01T15:16:27.210 に答える
0

SubWidgetのtemplateStringにタイプミスがあります。それは単にそれでしょうか?

...<div style="height:100%" data-dojo-type="dijit.layout.TabContainer" tabPosition: \'left-h\'" data-dojo-attach-point="tabContainer" >'...

おそらく次のようになります。

<div style="height:100%" data-dojo-type="dijit.layout.TabContainer" data-dojo-props="tabPosition: \'left-h\'" data-dojo-attach-point="tabContainer" >'

それはあなたのフィドルのトリックをするようです:http://jsfiddle.net/y4uG2/18/

于 2012-12-01T14:59:28.220 に答える