2

Dojo のドキュメントに問題があります (いつものように)。
彼らのTabContainer APIでは、2 番目の引数を「params」というオブジェクトとしてリストしていますが、この params オブジェクトに実際に何を入れることができるかについては決して言及していません。幅の指定はできますか?高さ?コンテナー内のタブにしたい div の ID を指定する必要がありますか?

また、Dojo パーサーによって解析されるタブ・コンテナーを指定したい場合に、HTML にどの属性を入れるかについての仕様もありません。タイトル、選択済み、およびクローズ可能なオプションを配置できる次の例を見つけました。他に何かありますか?

<div id="tabA1" dojoType="dijit.layout.ContentPane" title="First Tab"  selected="true" closable="true">
        First Tab
    </div>
    <div id="tabA2" dojoType="dijit.layout.ContentPane" title="Second Tab" closable="true">
        Second Tab
    </div>
    <div id="tabA3" dojoType="dijit.layout.ContentPane" title="Third Tab" closable="true">
        Third Tab
    </div>
</div>
4

1 に答える 1

9

私はDojoウィジェットの専門家ではありませんが、これは私が知っていることです。

  1. すべてのDojoウィジェットコンストラクターには署名があります。

    var widget = new Widget(params、node);

  2. パラメータを見つける最良の方法は、ソースコードを調べることです。怖がらないでください。関連するクラスの最初に、変数が文書化されます。

  3. 関連するファイルは、パスによって名前が付けられているため、通常、ウィジェットの名前を使用して簡単に見つけることができます。

  4. このようなものを検索する最良の方法は、お気に入りのテキストエディタでDojoチェックアウトを使用することです。ただし、夜間のチェックアウトも機能します(トランクをたどる場合)。またはTracソースブラウザ

  5. テストやデモを見る力を過小評価しないでください。

例:dijit.layout.TabContainer⇒dijit / layout/TabContainer.js。ファイルが見つからない場合は、_base.jsの階層のディレクトリ、または同様のサウンドのファイルを調べてください。後者は、関連するクラスをバンドルできます。ただし、ほとんどの場合(TabContainerの場合など)、すぐに見つかります。行って見てみましょう。

クラスのトップには、2つの公開された文書化されたパラメータがあります。

  • tabPosition —文字列。タブのコンテンツに対してタブが移動する場所を定義します。「上」、「下」、「左-h」、「右-h」。デフォルト:「トップ」。
  • tabStrip —ブール。タブリストがレイアウト用に追加のクラスを取得するかどうかを定義します。デフォルト:false。
  • _controllerWidget —無視してください。アンダースコアで始まるパブリックパラメーターはありません—保護されたメンバーを指定するのは一般的なJavaScriptの規則です。

しかし、それだけではありません。TabContainerはdijit.layout.StackContainerに基づいています( dojo.declare()ヘッダーを見てください)。StackContainerのパブリックパラメータも使用できます。

  • doLayout —ブール値。trueの場合、現在表示されている子のサイズを自分のサイズと一致するように変更します。デフォルト:true。
  • 永続化—ブール値。セッション間で選択した子を記憶します。デフォルト:false。

ご覧のとおり、コードとパラメーターは適切に文書化されていますが、APIツールに常に反映されているわけではありません。これで、自信を持ってタブコンテナを作成できます。

しかし、最初にそれが実際に動作するのを見てみましょう。すべてのDijitテストは常にdijit/testsにあります。dijit.layout。*ウィジェットはすべてdijit/tests/layoutでテストされます。関連するテストファイルの名前はtest_TabContainer.htmlのようになりますが、実際には次の5つのファイルが表示されます。

たとえば、test_TabContainer.htmlの最初のTabContainerを再作成してみましょ

var tc = new dijit.layout.TabContainer(
  {persist: true, tabStrip: true}, "mainTabContainer");

または、インラインテストのように行うことができます。

<div id="mainTabContainer" dojoType="dijit.layout.TabContainer"
    persist="true" tabStrip="true" style="width: 100%; height: 20em;">
  ...
</div>

元の質問に戻ります。これで、幅と高さが単にスタイルとして指定され、特別な属性はなく、派手なものはなく、直感的なCSSだけが指定されていることがわかります。したがって、プログラムで実行する場合は、TabContainerの新しいインスタンスを作成する前に、ノードに設定するだけです。

ええ、APIドキュメントにもこれらの小さな詳細がすべて含まれていることを望みますが、セットアップ全体は直感的であり、関連する部分はファイルに直接文書化されています。私たちはソースコードに行きましたが、ソースコードを解読しようとはせず、クラスの上部にある人間が読める形式のコメントを読むだけでした。

于 2008-11-28T18:33:42.257 に答える