Search code examples
node.jshandlebars.js

Nested JSON looping in handlebars


I have the following json format and wanted to know how to iterate this json in handlebars

[ { items: [ [Object], [Object], [Object], [Object] ] },
  { items: [ [Object], [Object], [Object], [Object] ] },
  { items: [ [Object] ] } ]

I am getting object from nodejs in above format and need help to organise the following code in handlebars using looping mechanism.

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
                    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
                    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
                    <style>
                        .carousel-inner > .item > img,
                        .carousel-inner > .item > a > img {
                            width: 100%;
                            margin: auto;
                        }
                    </style>



                    <div class="container">
                        <div id="myCarousel" class="carousel slide" data-ride="carousel">

                            <!-- Wrapper for slides -->
                            <div class="carousel-inner" role="listbox">
                                <div class="item active col-md-12">
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                </div>
                                <div class="item  col-md-12">
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                </div>
                                <div class="item  col-md-12">
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                </div>
                                <div class="item  col-md-12">
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                    <div class="col-md-3"><img src="http://cdn.jssor.com/demos/img/travel/06.jpg" alt="Chania"> </div>
                                </div>
                            </div>
                            <!-- Left and right controls -->
                            <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a>
                            <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a>
                        </div>
                    </div>

Solution

  • Hello I used theses data :

      var context = {
        "mainArr" : [{
          items: [
            ["Object"],
            ["Object"],
            ["Object"],
            ["Object"]
          ]
        }, {
          items: [
            ["Object"],
            ["Object"],
            ["Object"],
            ["Object"]
          ]
        }, {
          items: [
            ["Object"]
          ]
        }]
      };
    

    And here is the loop you should use :

      <ul>
      {{#each mainArr}} 
            <li>
                <ul>
                        {{#each items}}
                        <li>value : {{this}}</li>
                        {{/each}}
                </ul>
      {{/each}}
      </ul>
    

    Here is a fiddle link so that you can see that it works : https://jsfiddle.net/ChristopheThiry/bwjr2frf/