Categories
JavaScript Answers

How to iterate over an object with JavaScript and Handlebars.js?

Spread the love

Sometimes, we want to iterate over an object with JavaScript and Handlebars.js.

In this article, we’ll look at how to iterate over an object with JavaScript and Handlebars.js.

How to iterate over an object with JavaScript and Handlebars.js?

To iterate over an object with JavaScript and Handlebars.js, we can use the #each keyword.

For instance, we write:

<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.7/handlebars.min.js"></script>

<script id="some-template" type="text/x-handlebars-template">
  <option value="none">select</option>
{{#each data}}
    <optgroup label="{{@key}}">
    {{#each this}}
        <option value="{{id}}">{{name}}</option>
    {{/each}}
    </optgroup>
{{/each}}
</script>

<select>

</select>

to add the Handlebars script and the template for looping through each entry in data.

We use #each this to loop through each array property.

@key returns the property name.

Then we write:

const source = $("#some-template").html();
const template = Handlebars.compile(source);
const data = {
  data: {
    fruit: [{
      id: 1,
      name: "banana"
    }, {
      id: 2,
      name: "apple"
    }],
    vegetables: [{
      id: 1,
      name: "broccoli"
    }]
  }
}

$('select').append(template(data));

to select the template script tag and return its HTML code with:

const source = $("#some-template").html();

Then we compile the template with:

const template = Handlebars.compile(source);

And finally, we render the template with the data with:

$('select').append(template(data));

Now we should see a drop down with the option groups rendered from the data object.

Conclusion

To iterate over an object with JavaScript and Handlebars.js, we can use the #each keyword.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *