2014-10-01 12 views
12

Ich muss durch verschachtelte json Array zu durchlaufen, die wie das, was ich will, ist zu durchlaufen Liste der Technologien in den einzelnen UnternehmenIterate durch verschachtelte JSON-Array in Winkelregler und eindeutige Werte erhalten

[ 
    { 
    "title": "EPAM", 
    "technologies": [ 
     "PHP", 
     ".net", 
     "Java", 
     "Mobile", 
     "Objective-C", 
     "Python", 
     "Ruby" 
    ], 
    "location": "Belarus", 
    "city": "Minsk" 
    }, 
    { 
    "title": "Parallels", 
    "technologies": [ 
     "PHP", 
     "Java", 
     "C++", 
     "iOS Development", 
     "C#", 
     "Ember.js" 
    ], 
    "location": "Russia", 
    "city": "Moscow" 
    } 
] 

sieht und dann Rückkehr eine Liste eindeutiger Werte. Es ist mir jedoch nicht gelungen, auf ein einzelnes Unternehmen in Unternehmens-Arrays im Controller zuzugreifen. So sieht es bisher aus

var app = angular.module('app', []); 

app.controller('CompaniesController', ['$scope', '$http', 
    function($scope, $http) { 
    $http.get('json/companies.json').success(function(data) { 
     $scope.companies = data; // get data from json 

     $scope.techStack = [] 

     $scope.companies = data.query(function(companies) { 
      console.log(companies); //I expected to see data here 
     }); 
    }); 

    } 
]); 

Anscheinend mache ich etwas falsch.

+0

Um ehrlich zu sein, stellen Sie zunächst eine Frage und dann, was Sie in Ihrem Controller zeigen, ist für den ersten Teil Ihrer Frage nicht annähernd relevant. Ich denke jedoch, dass Sie mit ein paar for-Schleifen und [einer Hilfsmethode] (http://underscorejs.org/#uniq) herausfinden können, was Sie wollen. –

Antwort

28

Verwenden Winkel foreach:

var app = angular.module('app', []); 
    app.controller('CompaniesController', ['$scope', '$http', 
     function($scope, $http) { 
     $http.get('json/companies.json').success(function(data) { 
      $scope.companies = data; // get data from json 
       angular.forEach($scope.companies, function(item){ 
        console.log(item.technologies); 
       }) 
      }); 
     }); 

     } 
    ]); 
3

Um Array in AngularJS durchlaufen zu können, können Sie einfach angular.forEach verwenden. Zum Beispiel

angular.forEach(companiesList, function(company) { 
    //Here you can access each company. 
}); 

Ich habe eine einfache Demo basiert auf dem Code gemacht, das „Unternehmen“ und einzigartige „Technologies“ -Liste.

DEMO

1

foreach Funktion des Benutzers durch Winkeldaten für Looping.

2

versuchen diese

var app = angular.module('app', []); 

app.controller('CompaniesController', ['$scope', '$http', 
    function($scope, $http) { 
    $http.get('json/companies.json').success(function(data) { 
     $scope.companies = data; // get data from json 

     $scope.techStack = [] 

     angular.forEach($scope.companies, function(item){ 
      $scope.techStack = item.technologies; 
      var uniqueTech = []; 
      for (var i = 0; i < $scope.techStack.length; i++) 
      { 
       if (uniqueTech.indexOf($scope.techStack[i]) == -1) 
        uniqueTech.push($scope.techStack[i]); 
      } 
      console.log("Unique Technologies : " + uniqueTech); 

     }) 
    }); 

    } 
]); 
6

Wenn Sie nur auf UI verschachtelte Array anzuzeigen, können Sie das tun, gerade im Hinblick auf z.B.

  <tr ng-repeat="i in Items"> 
       <td valign="top">{{i.Value}}</td> 
       <td valign="top"> 
        <table> 
         <tr ng-repeat="c in i.Children"> 
          <td>{{c.Value}}</td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
Verwandte Themen