2

私のJSONは次のようになります。

{
  "features": [
    {
      "id": "belly",
      "scenarios": [
        {
          "id": "belly;a-few-cukes",
          "tags": [
            {
              "name": "@tag1"
            }
          ],
          "steps": [
            {
              "name": "I have 42 cukes in my belly"
            },
            {
              "name": "I wait 1 hour"
            },
            {
              "name": "my belly should growls"
            }
          ]
        },
        {
          "id": "belly;a-few-cukes-with-new-test",
          "tags": [
            {
              "name": "@tag2"
            }
          ],
          "steps": [
            {
              "name": "I have 42 cukes in my belly"
            },
            {
              "name": "I wait 1 hour"
            },
            {
              "name": "my belly should growl"
            }
          ]
        }
      ]
    },
    {
      "id": "newbelly",
      "scenarios": [
        {
          "id": "newbelly;a-few-cukes-with-new-feature",
          "tags": [
            {
              "name": "@tag1"
            }
          ],
          "steps": [
            {
              "name": "I have 42 cukes in my belly"
            },
            {
              "name": "I wait 1 hour"
            },
            {
              "name": "my belly should growls"
            }
          ]
        }
      ]
    }
  ]
}

@tag1、@tag2 などの一意のタグ名をすべて取得したいと考えています。お気付きのように、@tag1 が 2 回繰り返されています。

私のテンプレート:

{{#getTags features}}
    {{#scenarios}}
        {{#tags}}
            <p>{{name}}</p>
        {{/tags}}
    {{/scenarios}}
{{/getTags}}

これまでに作成したカスタム ヘルパー:

Handlebars.registerHelper('getTags', function(context, block) {
    var ret = "";

    for (var i = 0; i < context.length; i++) {
        ret += block.fn(context[i]);
    };

    return ret;
});

上記のカスタム ヘルパーはすべてのタグを返しますが、一意のタグが必要です。

4

1 に答える 1