0

というウィジェットがあります。これは、というImageBox別のウィジェット内で簡単な解析と画像の配置を行うだけSlideBoxです。

解析後の ImageBox ノード構造のサンプル構造 (コンソールに表示されるもの):

<div class="textwrapper">
    <div class="text">
         <h2>Title of Image</h2>
    </div>
</div>

完全な SlideBox のサンプル構造:

<div data-dojo-type="dj/SlideBox" widgetid="SlideBox_1">
    <div data-dojo-type="dj/ImageBox" widgetId="ImageBox_1">
        <!-- It's here!! Right here!! -->
        <div class="textwrapper">
            <div class="text">
             <h2>Title of Image</h2>
            </div>
        </div>
    </div>
</div>

ImageBoxpostCreateメソッドで、textwrapper div の高さを見つけようとしていますが、dijit レジストリ メソッドのいずれかを使用してウィジェットをクエリまたは検索しようとしても、何も返されません。

textwrapper と text div は、元のマークアップではなく、dojo で作成されることに注意してください。

ウィジェットが表示され、そこにあり、.textwrapperアクセスしようとしている div が表示されます。Dojo がウィジェットの解析を処理するために、いくつかの順序や方法があるようです。

ウィジェット内のウィジェットを見つけるにはどうすればよいですか?

4

3 に答える 3

1

要求に応じて、OP の回答に関するコメントから移動しました。子ウィジェットにアクセスするには、postCreate() の後まで待って、子ウィジェットを DOM に追加できるようにします。

子ウィジェットは、ウィジェットのライフサイクル ( http://dojotoolkit.org/documentation/tutorials/1.8/understanding_widgetbase/ ) に従って、コンテナー ウィジェットの startup() メソッドからアクセスできる必要があります。

于 2013-02-19T17:03:23.267 に答える
1

ノードの下にあるウィジェットを見つけるには、通常、registry.findWidgetsメソッドを使用します。リファレンス ガイドに記載されているように、findWidgets はウィジェット内のウィジェットを再帰的に検索しません...

しかし、あなたの場合、ウィジェットのテンプレートで data-dojo-attach-point を textwrapper div に設定するだけで十分です。次のようなものが ImageBox のテンプレート html ファイルにある可能性があります。

<div class="${baseClass}">
    <div class="textwrapper" data-dojo-attach-point="textwrapper"></div>
</div>

次に、ImageBox ウィジェット内の textwrapper div を次のように参照できます。

postCreate: function() {
    // use this.textwrapper to access the textwrapper div, e.g. like:
    var contentBox = domGeom.getContentBox(this.textwrapper);
    ....
}
于 2013-02-13T08:26:13.403 に答える
0

これはちょっとハックに思えますが、うまくいきます。dojo/ready基本クラスの呼び出しを追加することpostCreateで、すべてが完了するまで待機してからクエリを実行できます。

各ウィジェットのライフサイクルにいくつかの log() 呼び出しを追加したところ、ImageBox が最後に起動していたことがわかりましたpostCreateready()含まれているウィジェットのへの呼び出しを追加するpostCreate()と、ログ呼び出しの順序が逆になり、続行する前にすべての従属オブジェクトがロードされるのを効果的に待機するようになりました。

于 2013-02-14T08:27:02.170 に答える