webentwicklung-frage-antwort-db.com.de

Durchlaufen Sie verschachtelte Json-Arrays im Winkelcontroller und erhalten Sie eindeutige Werte

Ich muss durch verschachtelte Json-Arrays iterieren, die so aussehen

[
  {
    "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" 
  }
]

Ich möchte die Liste der Technologien in jedem Unternehmen durchlaufen und dann eine Liste eindeutiger Werte zurückgeben. Ich konnte jedoch nicht auf ein einzelnes Unternehmen in den Unternehmensarrays im Controller zugreifen. 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.

12
vitalym

Verwenden Sie für jedes die Winkel's: 

 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);  
               })
            });
        });

      }
    ]); 
28
user3681587

Wenn Sie nur ein verschachteltes Array auf der Benutzeroberfläche anzeigen müssen, können Sie dies direkt in der Ansicht tun.

            <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>
6
Evgeny

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

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

Ich habe eine einfache Demo erstellt, die auf Ihrem Code basiert und die "Unternehmen" und unique "Technologien" enthält.

DEMO

3
ebram khalil

versuche dies 

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);

        })
    });

  }
]); 
2
Sunil Kumar

foreach-Funktion des Benutzers Winkel zum Durchlaufen von Daten.

0
vishal shah