2017-10-09 8 views
0

ループ内の値に応じて、ループ内で異なる値を割り当てようとしています。以下の入力の場合Dust.jsでループ内の/ else else

{ 
    "products":[ 
    { 
     "id":1, 
     "name":"Ruby on Rails Tote", 
     "has_variants":false, 
     "master":{ 
     "id":1, 
     "name":"Ruby on Rails Tote", 
     "sku":"ROR-00011", 
     "price":"15.99", 
     "weight":"0.0", 
     "height":null, 
     "width":null, 
     "depth":null, 
     "is_master":true, 
     "slug":"ruby-on-rails-tote", 
     "description":"Autem ducimus ipsum temporibus doloremque voluptatem eos ea. Et esse nobis consequatur quam tempora quia assumenda. Ipsam magni quaerat ipsa ut commodi et quae. Eligendi rerum in ratione id et nemo sunt. Atque dolore voluptatem quis accusantium id.", 
     "track_inventory":true, 
     "cost_price":"17.0", 
     "option_values":[ 

     ], 
     "display_price":"$15.99", 
     "options_text":"", 
     "in_stock":true, 
     "is_backorderable":true, 
     "total_on_hand":50, 
     "is_destroyed":false 
     }, 
     "variants":[ 

     ], 

     ... 

has_variantsプロパティは、私はプロパティmaster.idを使用したいfalseありそうでない、(複数毎の製品があるかもしれない)の変種を反復し、idプロパティを使用する場合各バリアントの唯一のバリアントIDを出力し、マスターIDを省略

<outer>{~n} 
{#products} 
{@eq key=has_variants value=true} 
The ID is {master.id}{~n} 
{:else} 
{#variants} 
The ID is {id}{~n} 
{/variants} 
{/eq} 
{/products} 
</outer> 

私は次の試みてきました。

プロパティの値に基づいてリストと条件付きプロパティを反復処理するにはどうすればよいですか?

答えて

1

あなたはほぼ正しいです。しかしeqを使用する代わりに、プロパティを直接使用してください。 eqは緩やかな比較のためのものです。

<outer>{~n} 
    {#products} 
    {#has_variants} 
     The ID is {master.id}{~n} 
    {:else} 
     {#variants} 
     The ID is {id}{~n} 
     {/variants} 
    {/has_variants} 
    {/products} 
</outer> 
+0

本当に 'eq'を使用したい場合は、すべてのダストヘルパーが参照、文字列、および数字の引数だけを取ることを覚えておいてください。したがって、trueと比較したい場合は、 'value 'とコンパレータをstringからboolへ強制的に変換するために、' {@eq key = has_variants value = "true" type = "boolean"} 'を使用してください。 – Interrobang

関連する問題