2017-03-06 9 views
0

Ich arbeite an einer App, und ein Teil davon soll die Namen von Personen aus einem Javascript-Objekt auflisten. Allerdings scheint es nicht, wie ich es erwarte, durch meinen JSON zu iterieren, stattdessen gibt es das ganze Ding zurück, als ob es ein Objekt wäre. Warum macht es das?Angular ng-Wiederholung nicht durch JSON iterieren

Gebrochene Plunker https://plnkr.co/edit/u9DHsTlaO0H2G2jqnzLa

Index.HTML

<!DOCTYPE html> 
<html ng-app="plunker"> 
    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.js"></script> 
    <script src="app.js"></script> 
    </head> 
    <body> 
    <people-list></people-list> 
    </body> 
</html> 

app.js

var app = angular.module("plunker", []); 
app.directive("peopleList", function() { 
    return { 
     restrict: "E", 
     templateUrl: "people-list.html", 
     controller: function() { 
     this.people = peopleObject; 
     }, 
     controllerAs: "people" 
    }; 
    }); 

    var peopleObject = [ 
    { firstname: 'John', 
      middlename: 'K', 
      lastname: 'Doe', 
      sex: "M" 
    }, 
     { 
     firstname: 'Jane', 
      middlename: 'R', 
      lastname: 'Doe', 
      sex: "F" 
    }, 
     { 
     firstname: 'Jacob', 
      middlename: 'Harold', 
      lastname: 'Smith', 
      sex: "M" 
     } 
    ]; 

Menschen-list.html

<ul class="list-group menuIcons"> 
    <li ng-click="tab.setTab(1);" class="list-group-item" ng-repeat="person in people"> 
     {{person.firstname}} 
    </li> 
</ul> 

Antwort

4

Versuchen Änderung dieser. Sie definieren controllerAs in Richtlinie dann sollten Sie

<ul class="list-group menuIcons"> 
    <li ng-click="tab.setTab(1);" class="list-group-item" ng-repeat="person in people.people"> 
    {{person.firstname}} 
</li> 
</ul> 
+0

Darf ich fragen, zu ändern, warum hat der Benutzer Gebrauch 'this.'? und als ich versuchte, es zu entfernen, funktionierte es nicht einmal. Warum ist das so? – Smit

+0

Das hat es geschafft, danke! Ich verstehe immer noch nicht, woher diese zusätzlichen 'Leute' kamen, obwohl – Mr404servererror

+1

@Smit Benutzer '' ControllerAs' Syntax verwendet. –

0

Sie verfehlten dass in Vorlage aus controllerAS alias in ng-Wiederholung zu setzen.

<ul class="list-group menuIcons"> 
    <li ng-click="tab.setTab(1);" class="list-group-item" ng-repeat="person in people.people"> 
     {{person.firstname}} 
    </li> 
</ul> 
0

Menschen enthalten ein anderes Objekt Menschen, so müssen Sie person.person

wie wie unten Code verwenden

<ul class="list-group menuIcons"> 
    <li ng-click="tab.setTab(1);" class="list-group-item" ng-repeat="person in people"> 
     {{person.firstname}} 
    </li> 
</ul> 

prüfen Arbeits plnkr

0

ändern people-list.html zu

<ul class="list-group menuIcons"> 
    <li ng-click="tab.setTab(1);" class="list-group-item" ng-repeat="person in people.people"> 
     {{person.firstname}} 
     </li> 
</ul> 

Sie benötigen

ng-repeat="person in people"> 

zu

ng-repeat="person in people.people"> 
Verwandte Themen