If/else 在 Dust.js 循环内

If/else within loop with 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":".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,而忽略了主 ID。

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

你几乎是对的。但是不使用 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>