これを見て Blazeを使用 ガイド、Blazeは{{#if}}
および{{else}}
ステートメントですが、if-elseステートメントの例を見たことはありません。これはBlazeでサポートされていますか?または、elseブロック内で追加のifブロックを実行する必要がありますか?.
私は試した {{else if}}
、ただしエラーが発生しました。
{{#if en}}{{text.en}}{{else if tc}}{{text.tc}}{{/if}}
スペースバーは handlebars と同じ制御フロー構造を使用するため、答えは this one と同じです。あなたの場合:
{{#if en}}
{{text.en}}
{{else}}
{{#if tc}}
{{text.tc}}
{{/if}}
{{/if}}
サイドノート- jade の素晴らしい点の1つは、else if
。
ロジックを次のようなヘルパーに移動する方が良い場合もあります。
Template.myTemplate.helpers({
textValue: function() {
if (this.en) {
return this.text.tc;
} else if (this.tc) {
return this.text.tc;
}
}
});
<template name="myTemplate">
<p>{{textValue}}</p>
</template>
@David Wheldonの優れた回答に続いて、BlazeテンプレートからJavaScriptヘルパー関数にパラメーターを渡すことができることも注目に値します。
したがって、たとえば、以下のコードは、isSelected region customerCompany
行でヘルパーメソッドを呼び出すことにより、選択リストのオプションを選択的にレンダリングします。
{{#if isSelected region customerCompany}}
<option value={{region._id}} selected>{{region.name}}</option>
{{else}}
<option value={{region._id}}>{{region.name}}</option>
{{/if}}
そして、jsファイルで:
isSelected: function (region, customer) {
return customer.salesRegionId === region._id;
},
変数をヘルパーに渡すこのアプローチは、テンプレートを使用するときにthis
キーワードの意味の変化に伴う混乱を避けるために一般的に推奨されます。
現在のバージョンのBlazeは、else ifをサポートしています-サンプル形式およびgithub問題解決への参照については、以下を参照してください。
{{#if isUserProfile}}
<h3>User Profile</h3>
{{else if isLawyerProfile}}
<h3>Lawyer Profile</h3>
{{else}}
<h3>Test</h3>
{{/if}}