Zen Mojo の既定のページ・マネージャおよびヘルパー・プラグイン
このセクションでは、多くのさまざまな構成で使用できる 2 つの軽量のプラグインについて説明します。
-
既定のページ・マネージャ・プラグインは、Dojo、ChocolateChip-UI、または jQuery Mobile 専用に提供されているヘルパー・プラグインを除く、すべてのヘルパー・プラグインと共に使用できます。
-
既定のヘルパー・プラグインは、任意のページ・マネージャと共に使用することも、任意のヘルパー・プラグインと組み合わせて使用することもできます。これは、他の多くのヘルパー・プラグインによって広範に使用される $loop、$if、および $content ユーティリティ・オブジェクトを提供します。
これらのプラグインは、モバイル・デバイスとデスクトップ・コンピュータの両方での使用に適しています。どちらのプラグインにも、外部の JavaScript または CSS ファイルは不要です。
ページ・クラスへの既定のプラグインの追加
これらのプラグインには、外部の CSS または JavaScript ファイルは不要です。
以下の例は、既定のページ・マネージャとヘルパーを pageContents XData ブロックで登録する方法を示しています (詳細については、“ページ・クラスへのプラグインの追加” を参照)。この例の中の HTML5 ヘルパーは必須ではありませんが、多くの場合に役立ちます。
<mojo:mojoDefaultPageManager>
<mojo:HTML5Helper/>
<mojo:mojoDefaultHelper/>
</mojo:mojoDefaultPageManager>
既定のページ・マネージャは、ChocolateChip-UI、Dojo、または jQuery Mobile 専用に提供されているヘルパー・プラグインを除く、すべてのヘルパー・プラグインと共に使用できます。
既定のヘルパー・プラグインは任意のページ・マネージャと共に使用することができ、すべてのヘルパー・プラグインと互換性があります。これは、pageContents XData ブロックで、他のすべてのヘルパーの後にリストされる必要があります。
-
ページ・クラスは、ページ・メソッド adjustContentSize() のオーバーライドを実装する必要があります。このメソッドは、各 documentView の幅、高さ、および位置を指定する必要があります。詳細および例については、“プラグインを使用した作業” の章の “adjustContentSize() メソッドのオーバーライド” を参照してください。
これらのプラグインの詳細については、"クラス・リファレンス" の %ZEN.Mojo.Plugin.mojoDefaultPageManagerOpens in a new tab および %ZEN.Mojo.Plugin.mojoDefaultHelperOpens in a new tab を参照してください。
テンプレート・クラスでの既定のヘルパーの使用
このプラグインには、$content、$if、および $loop ユーティリティ・レイアウト・オブジェクトが含まれています。詳細は、この章で後述する “既定のヘルパー・レイアウト・オブジェクト” を参照してください。
このプラグインは、レイアウト・オブジェクト・メソッドを提供しません。
既定のヘルパー・プラグインには、%ZEN.Mojo.Plugin.baseHelperPluginOpens in a new tab から継承されたもの以外のユーティリティ・メソッドは含まれていません。
適用不可 — このプラグインは外部ライブラリを使用しません。
このプラグインには、特殊なイベント処理要件はありません。
既定のヘルパー・レイアウト・オブジェクト
Zen Mojo の既定のヘルパー・プラグインには、他のプラグインのレイアウト・オブジェクトにユーティリティ関数を提供するレイアウト・オブジェクト・セットが含まれています。
-
$content レイアウト・オブジェクト — 任意の HTML を含めることができます。
-
$if レイアウト・オブジェクト — ページに特定のオブジェクトを表示するかどうかを制御します。
-
$loop レイアウト・オブジェクト — 他の多くのヘルパー・プラグインで使用される汎用目的の反復子です。
このプラグインで提供されるレイアウト・オブジェクトのリファレンス情報については、プラグイン・ドキュメント・アプリケーションを使用してください (“プラグイン・ドキュメントおよびウィジェット・リファレンス・アプリケーションの使用” を参照してください)。
$content レイアウト・オブジェクト
$content レイアウト・オブジェクトには、任意の HTML を含めることができます。ただし、その HTML は適格でなければなりません。以下に例を示します。
var htmlstring = '<h2>The Demo Team</h2>'
htmlstring=htmlstring + '<p><strong>You have been invited to a meeting in Boston</strong></p>';
htmlstring=htmlstring + '<p>Are you available tomorrow at 10am?</p>';
htmlstring=htmlstring + '<p class="ui-li-aside"><strong>6:24 </strong>PM</p>'
myLayout = {
children: [ { type: '$content', title: '$content demo', content:htmlstring } ]
}
$if レイアウト・オブジェクト
$if レイアウト・オブジェクトは、ページに特定のオブジェクトを表示するかどうかを制御するために使用されます。$if オブジェクトは、プロパティ value、expectedValue、および children を提供します。value が expectedValue の場合、Zen Mojo は children プロパティで提供されているレイアウト・オブジェクトをレンダリングします。それ以外の場合、Zen Mojo は $if オブジェクトについて何もレンダリングしません。
$loop レイアウト・オブジェクト
$loop レイアウト・オブジェクトは汎用目的の反復子です。例えば、これを使用して、さまざまな行があるテーブルを作成します。ZMdemo.html5.baseTemplateOpens in a new tab にある例を参照してください。その他の多くのプラグインは、$loop オブジェクトを内部的に使用します。ループは入れ子にすることができます。
特殊な場合に、レイアウト・オブジェクトは、レイアウト・グラフ内で使用できる変数を提供します。例えば、既定の Mojo ヘルパー・プラグインには、レイアウト・オブジェクト $loop があります。これは、$loopindex、$loopnumber、$loopValue などの変数を提供します。
変数 variablename, を参照するには、構文 '=[variablename]' を使用します。
以下の例は、$loopValue 変数の参照を示しています。また、この例では、HTML5 ヘルパー・プラグインからの $div レイアウト・オブジェクトも使用します。
myLayout = {
children: [
{ type: '$loop', title: 'Basic $loop demo', value:['apples','bananas','coconuts'],
children: [
{type:'$div', $content:'=[$loopValue]'}
]}
]
}
通常、$loop オブジェクトを使用するには、以下のようにします。
-
このオブジェクトの value プロパティを指定します。これは、配列です。value 配列内の項目の数により、ループ内の項目の数が決定されます。
各配列項目は、オブジェクト、配列、またはリテラル値にすることができます。配列項目がオブジェクトの場合、通常、各オブジェクトは同じプロパティのセットを持っている必要があります。同様に、配列項目が配列の場合、各配列は同じ構造を持っている必要があります。
-
このオブジェクトの children プロパティを指定します。これはレイアウト・オブジェクトの配列です。ループには、value 配列の項目ごとに、これらのオブジェクトのセットが 1 つ含まれています。
これらのレイアウト・オブジェクトについては、value 配列の現在の項目を参照できます。そのようにするには、構文 '=[value to obtain]' を使用します。
例えば、配列項目がオブジェクトの場合は、'=[property]' を使用します。ここで、property は配列内のいずれかのオブジェクトのプロパティです。(また、ドット構文を使用して、プロパティのプロパティ (以下同様に続く) を参照できます。)
以下に、Zen Mojo HTML5 ヘルパー・プラグインから $div オブジェクトも使用している例を示します。
myLayout = { children: [
{ type: '$loop', title: 'Basic $loop demo',
value:[
{product:'apples', sku:'SKU-001'},
{product:'bananas', sku:'SKU-002'},
{product:'coconuts',sku:'SKU-003'}
],
children: [ {type:'$div', title:'=[product]', $content:'=[sku]'} ]
}
]}
$loop 内で使用可能な変数
$loop を使用する場合、作成した変数の他に、以下の変数をレイアウト・グラフ内で使用できます。
-
$loopIndex は、ループの繰り返しに使用される、0 から始まるインデックスです。
-
$loopNumber は、ループの回数です。この変数は $loopIndex + 1 です。
-
$loopValue は、value プロパティからの現在の配列項目です。
-
$loopKey は TBD です。
$loop 内のレイアウト・オブジェクトの場合、Zen Mojo はそのオブジェクトの key プロパティに elementkey:index という複合値を指定します。ここで、elementkey は、メソッドで定義されたこのレイアウト・オブジェクトの key プロパティの値です。また、index は、ループの繰り返しに使用される、0 から始まるインデックスです。
以下の例では、value プロパティの文字列の配列を使用します。次に、$loopValue 変数を使用して、それぞれの値を表示します。また、前述の例と同様に、HTML5 ヘルパー・プラグインからの $div レイアウト・オブジェクトを使用します。
myLayout = { children: [
{ type: '$loop', title: 'Basic $loop demo',
value:['apples','bananas','coconuts'],
children: [ {type:'$div', $content:'=[$loopValue]'} ]
}
]}
既定のヘルパーおよびページ・マネージャのサンプル・コードの使用
多くのサンプル・アプリケーションでは、これらのプラグインを使用します。Bootstrap の例が代表的です (詳細は、“Bootstrap プラグインのサンプル・コードの使用” を参照してください)。