2017-10-09 61 views
0

我试图根据循环内的值在循环内分配不同的值。如果/其他内循环与Dust.js

对于以下输入:

{ 
    "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属性为false我想使用属性master.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> 

其中仅打印出的变体的ID,并省略了主标识。

如何基于属性的值迭代列表和条件使用属性?

回答

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',请记住所有Dust助手只接受引用,字符串和数字参数。所以,如果你想与真实比较,使用'{@eq key = has_variants value =“true”type =“boolean”}'强制将'value'和比较器从字符串转换为布尔值。 – Interrobang