2013-02-22 19 views
8

状態が悪い場合は埃があります。私は{countryCode}が米国であるかどうかを把握する場合は、他の条件を作るしようとしている2つの異なるダストテンプレートへのポイントは、国コードにダスト状態の場合

{>"receipt/merchantInfo/merchantInfo_{countryCode}"/} 

を依存していること部分を持っています。 例:

{@if cond="'{countryCode}' == 'US'"} 
<p>is country code US</p> 
{:else} 
<p>is NOT country code US</p> 
{/if} 

これは機能しません。誰かが私がこれに間違っていたアイディアを持っていますか?

+0

※条件を指定すると、簡単に塗りつぶすことができます。 – eMarine

答えて

19

@if潜在的なセキュリティホール(条件にevalを使用している)のため、このヘルパーは廃止されました。代わりに@eqヘルパーを使用することをお勧めします。

{@eq key=countryCode value="US"} 
    <p>is country code US</p> 
{:else} 
    <p>is NOT country code US</p> 
{/eq} 

それは(あなたがそのための{@contextDump/}を使用することができます)COUNTRYCODEがあなたのコンテキスト内で利用可能であることを確認し、動作しない場合。

+0

セキュリティホールに言及しています。どのように '選択'? 'select'を' eq'や 'gte'などで使うことはできますか?どのように複雑な条件を書くことができますか? 'A> B && B <= C && C!= 10'と言うことができます – thefourtheye

+1

'eq'、' gt'、 'lt'などで' select'を使うことができます。現在のところ、 。ネスティングを使用する必要があり、通常はコードが繰り返されます。 'や'や 'や'ヘルパーの作成についての話がありましたが、その間は可能な限りあなたのデータを変更することをお勧めします。 – smfoote

+0

この情報源を提供してください。 dustjs-helpersのコード/ウェブサイトには、 "if"が推奨されていないことは記載されていません。 –

10

私はこれを行うだろう:

{@select key=countryCode } 
    {@eq value="US"}<p>is country code US</p>{/eq} 
    {@eq value="UK"}<p>is country code UK</p>{/eq} 
    {@default}<p>is NOT country code US or UK</p>{/default} 
{/select} 

はあなたがバージョン1.x以降を使用していることを確認してください。

Helpersがロードされていることを確認してください。先日私はこれに遭遇した。あなたはこれが機能するために必要であり、そうでないことをあなたに伝えるエラーはありません。

2

@ifに夢中ですが、evalの使用に関するセキュリティ上の問題が気に入らなければ、私の代わりの@ifヘルパーを使用できます。 if条件を指定するための属性test = "expr"を提供します。 evalは式を評価するために使用されません。

コンテキスト内の変数は、コンテキストの値にアクセスするために使用されるダスト名とパスに制限されています。定数は、JavaScriptの整数、浮動小数点数、16進数、文字列形式( "xx"または "xx")です。オペランドは、「変数」、定数、または値を生成するバイナリまたは単項式にすることができます。関係演算子は<、>、< =、> =、==、!=です。ブール演算子は! (単項)、|| & & ..演算子の優先順位はJavaScriptと同じで、括弧は明瞭にするか、または優先順位が必要なものでないときに使用できます。それはまだevalを()を使用してCOND = "exprの" 属性を許可するコードを持っていることを

{@if test="state == 'CA' || state == 'NY'"} 
    true stuff goes here 
{:else} 
    false stuff goes here 
{/if} 

注:ここでは

は一例です。これにより、既存のコードの移行パスが提供されます。

npmモジュール(https://npmjs.org/package/dustmotes-if)としてインストールできます。

2

あなたが使用することもできます。たとえば

{#key} 
    Some content 
{:else} 
    Some other content, if key doesn't have a value 
{/key} 

データ

{ 
    firstName: "Mickey", 
    lastName: "Mouse", 
    website: null, 
    phone:  "1-800-DISNEYWORLD" 
} 

ダストテンプレート

<p>First Name: {firstName}</p> 
<p>Last Name: {lastName}</p> 
{#website} 
    <p>Website: {website}</p> 
{:else} 
    <p>Phone: {phone}</p> 
{/website} 

出力:

を3210
First Name: Mickey 
Last Name: Mouse 
Phone: 1-800-DISNEYWORLD 
関連する問題