0

I'm new to Angular JS. I want to parse JSON containing 2Darray in Angular JS and want to fetch the images from array. Could anyone please help me with this. I have update my plunker https://plnkr.co/edit/ZtqFdgCQEvfc7zJcnPnY?p=preview

HTML Code

   <!DOCTYPE html>
    <html lang="en" ng-app="myApp">
        <head>
            <title></title>

            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
        </head>
        <body>
            <table class="table table-bordered" ng-controller="testCtrl">
                <thead>
                    <tr>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                        <th>SL.no</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="product in products">
                        <td>{{product.p_id}}</td>
                        <td>{{product.p_name}}</td>
                        <td>{{product.p_location}}</td>
                        <td>{{product.p_type}}</td>
                        <td>{{product.p_price}}</td>
                        <td>{{product.p_image}}</td>
                        <td>{{product.p_created}}</td>
                        <td>{{product.p_company}}</td>
                        <td>{{product.p_available_from}}</td>
                        <td>{{product.p_available_till}}</td>
                        <td>{{product.p_contact}}</td>
                        <td>{{product.abcimage}}</td>
                    </tr>
                </tbody>
            </table>

        <script src="script.js"></script>
        </body>
    </html>

JS :
var myapp = angular.module('myApp',[]);

myapp.controller('testCtrl', function($scope, $http){

    console.log("This is TestCtrl")

    $http.get('search.json').success( function(response) {
        console.log(response) 
        $scope.products=response;

    })

})


JSON:

[  
   [  
      {  
         "p_id":1,
         "p_name":"shaast",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":100000,
         "p_image":"uploads\/property\/shaast\/images",
         "p_created":"2016-05-04 12:42:48",
         "p_company":"Shaast",
         "p_available_from":"2016-05-04 00:00:00",
         "p_available_till":"2016-05-19 00:00:00",
         "p_contact":"1234567890"
      },
      null
   ],
   [  
      {  
         "p_id":2,
         "p_name":"shaast1",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":100000,
         "p_image":"uploads\/property\/shaast1\/images",
         "p_created":"2016-05-04 12:56:44",
         "p_company":"Shaast1",
         "p_available_from":"2016-05-04 00:00:00",
         "p_available_till":"2016-05-05 00:00:00",
         "p_contact":"1234567891"
      },
      null
   ],
   [  
      {  
         "p_id":3,
         "p_name":"abc",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":100000,
         "p_image":"uploads\/property\/abc\/images",
         "p_created":"2016-05-07 19:19:38",
         "p_company":"qwerty",
         "p_available_from":"2016-05-07 00:00:00",
         "p_available_till":"2016-05-21 00:00:00",
         "p_contact":"1234567896"
      },
      [  
         {  
            "abcimage":"uploads\/property\/abc\/images\/Chrysanthemum.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Desert.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Hydrangeas.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Jellyfish.jpg"
         }
      ]
   ],
   [  
      {  
         "p_id":4,
         "p_name":"mantri",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":11,
         "p_image":"uploads\/property\/mantri\/images",
         "p_created":"2016-05-14 14:55:53",
         "p_company":"cvb",
         "p_available_from":"2016-05-17 00:00:00",
         "p_available_till":"2016-05-20 00:00:00",
         "p_contact":"9934987654"
      },
      [  
         {  
            "abcimage":"uploads\/property\/abc\/images\/Chrysanthemum.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Desert.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Hydrangeas.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Jellyfish.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/jasmin.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/tfd.jpg"
         }
      ]
   ],
   [  
      {  
         "p_id":5,
         "p_name":"Shaast7",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":100000,
         "p_image":"uploads\/property\/Shaast7\/images",
         "p_created":"2016-05-14 16:06:13",
         "p_company":"Shaast7",
         "p_available_from":"2016-05-06 00:00:00",
         "p_available_till":"2016-05-20 00:00:00",
         "p_contact":"7207119201"
      },
      [  
         {  
            "abcimage":"uploads\/property\/abc\/images\/Chrysanthemum.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Desert.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Hydrangeas.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Jellyfish.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/jasmin.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/tfd.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Koala.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Lighthouse.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Penguins.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Tulips.jpg"
         }
      ]
   ],
   [  
      {  
         "p_id":6,
         "p_name":"abc2",
         "p_location":"bangalore",
         "p_type":"commercial",
         "p_price":100000,
         "p_image":"uploads\/property\/abc2\/images",
         "p_created":"2016-05-26 17:34:20",
         "p_company":"Shaast4",
         "p_available_from":"2016-05-26 00:00:00",
         "p_available_till":"2016-05-24 00:00:00",
         "p_contact":"7207119207"
      },
      [  
         {  
            "abcimage":"uploads\/property\/abc\/images\/Chrysanthemum.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Desert.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Hydrangeas.jpg"
         },
         {  
            "abcimage":"uploads\/property\/abc\/images\/Jellyfish.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/jasmin.jpg"
         },
         {  
            "mantriimage":"uploads\/property\/mantri\/images\/tfd.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Koala.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Lighthouse.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Penguins.jpg"
         },
         {  
            "Shaast7image":"uploads\/property\/Shaast7\/images\/Tulips.jpg"
         },
         {  
            "abc2image":"uploads\/property\/abc2\/images\/Chrysanthemum.jpg"
         },
         {  
            "abc2image":"uploads\/property\/abc2\/images\/Desert.jpg"
         },
         {  
            "abc2image":"uploads\/property\/abc2\/images\/Hydrangeas.jpg"
         },
         {  
            "abc2image":"uploads\/property\/abc2\/images\/Jellyfish.jpg"
         },
         {  
            "abc2image":"uploads\/property\/abc2\/images\/Koala.jpg"
         }
      ]
   ]
]

5 Answers 5

2

Try use this

 <tr ng-repeat="product in products">
    <td>{{product[0].p_id}}</td>
    <td>{{product[0].p_name}}</td>
    <td>{{product[0].p_location}}</td>
    <td>{{product[0].p_type}}</td>
    <td>{{product[0].p_price}}</td>
    <td>{{product[0].p_image}}</td>
    <td>{{product[0].p_created}}</td>
    <td>{{product[0].p_company}}</td>
</tr>

or use (key,value) in ng-repeat

<tr ng-repeat="(key,product) in products">
  <td>{{product[0].p_id}}</td>
   <td>{{product[0].p_name}}</td>
</tr>
Sign up to request clarification or add additional context in comments.

6 Comments

you still need to use product[0].p_id in ng-repeat="(key,product) in products"
(key,product) .. product will be array. If changing this in view would be simpler to do <tr ng-repeat="product in products[0]"> and leave the rest as OP had it
@charlietfl if you use <tr ng-repeat="product in products[0]"> it will only show first data
@currarpickt look at OP data structure...it is a big array that is the only element of an outer array
@charlietfl I tried your code, and it returned only the data for p_id = 1
|
1

The json is poorly formatted but if you can't change it, build a better structure in your success handler

$scope.products = response.map(function(item) { 
  var images = item[1] || [{"abcimage": ""}];
    return images.map(function(img) { 
      item[0].abcimage = img.abcimage;
      return item[0];
    }); 
  }).reduce(Function.prototype.apply.bind(Array.prototype.concat));

And update your html

ng-repeat="product in products track by $index"

Comments

0

There is an extra outer array for some reason

Change

$scope.products=response;

To

$scope.products=response[0];

or fix source to remove outer array

Comments

0
$http.get('search.json').success( function(response) {
    console.log(response[0]) 
    $scope.products=response[0];

})

1 Comment

Consider to improve your answer with some explanation of posted solution.
0

Use ng-repeat twice for iterating 2D array.

<tbody ng-repeat="productArr in products">
  <tr ng-repeat="product in productArr">
    <td>{{product.p_id}}</td>
    <td>{{product.p_name}}</td>
    <td>{{product.p_location}}</td>
    <td>{{product.p_type}}</td>
    <td>{{product.p_price}}</td>
    <td>{{product.p_image}}</td>
    <td>{{product.p_created}}</td>
    <td>{{product.p_company}}</td>
    <td>{{product.p_available_from}}</td>
    <td>{{product.p_available_till}}</td>
    <td>{{product.p_contact}}</td>
    <td>{{product.abcimage}}</td>
  </tr>
</tbody>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.