如果/ else在循环内使用Dust.js

时间:2017-10-09 15:23:39

标签: 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,否则,迭代变体(每个产品可能有多个),并使用{{1每个变体的属性。

我尝试过以下方法:

id

仅打印变体ID,并省略主ID。

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

1 个答案:

答案 0 :(得分: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>