2017-10-09 2 views
0

Ich versuche, verschiedene Werte innerhalb einer Schleife abhängig von einem Wert innerhalb der Schleife zuzuweisen.If/else innerhalb der Schleife mit Dust.js

Für die folgende Eingabe:

{ 
    "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":[ 

     ], 

     ... 

Wenn die has_variants Eigenschaft false I ist die Eigenschaft master.id, sonst nutzen wollen, durchlaufen die Varianten (es pro Produkt mehrere sein könnte), und verwenden Sie die id Eigenschaft von jeder Variante.

<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> 

, die nur die Variante ids ausdruckt, und lassen das Master-ids:

Ich habe folgendes versucht.

Wie iteriere ich über eine Liste und bedingte Verwendung Eigenschaften basierend auf dem Wert der Eigenschaft?

Antwort

1

Sie haben fast Recht. Aber anstatt zu verwenden, verwenden Sie einfach die Eigenschaft direkt. ist für lose Vergleiche.

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

Wenn Sie jemals wirklich 'eq' verwenden möchten, denken Sie daran, dass alle Staubhelfer nur Referenz-, String- und Zahlenargumente verwenden. Wenn Sie also mit true vergleichen möchten, verwenden Sie '{@eq key = has_variants value =" true "type =" boolean "}', um die Konvertierung von "value" und den Vergleicher von string in bool zu erzwingen. – Interrobang