2016-06-01 9 views
-1
<div (ng-repeat='item in items') > 
    {{item.name}} //works 
    {{item["name"]}} // works 
</div> 

Wie wiederhole ich item [property] dynamisch ohne Verwendung von ".name" oder ['name']?Angularjs ng-repeat dynamische Eigenschaft

+0

Mögliche Duplikat [Dynamisch Zugriffsobjekteigenschaft mit Variable] (http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable) –

+0

Was ist falsch mit 'item [property]'? Sie müssen es nur irgendwo in einem Bereich definieren, wie '$ scope.property = 'name';' –

+0

wäre es in Ordnung, wenn es nur eine Eigenschaft ist. Ich weiß nicht, wie viele Eigenschaften es in einem Gegenstand gibt (dh Länge des Gegenstands ... nicht Gegenstände) –

Antwort

0

Um Eigenschaften dynamisch durchlaufen zu können, müssen Sie Object.keys(item) aufrufen und dann durch sie durchlaufen. Es ist am besten, Ihre Daten innerhalb Ihres Controllers zu löschen, um das Finnen zu minimieren, das Sie in Ihrem HTML durchführen müssen.

Wenn Sie versuchen wollen diese Strukturen in Ihren HTML-Angular zu tun, Sie definieren könnten:

$scope.returnAllKeyValues = function(obj){ 
    var x = Object.keys(obj), 
     arr = []; 

    for(var i = 0; i<x.length; i++){ 
     arr.push(obj[x[i]]); 
    } 

    return arr; 
} 

Was diese Funktion tut, ist es in Ihrem JSON-Objekt nimmt, analysiert dann durch und sammelt alle die Werte für jeden Schlüssel darin.

Dann in Ihrem HTML, können Sie so etwas schreiben:

<h3>FIFA Mactch Summary:</h3> 
<div ng-app ng-controller="MyCtrl"> 
    <ul> 
     <li ng-repeat="item in items"> 
      <span ng-init="keyValues = returnAllKeyValues(item)"> 
       <span ng-repeat="keyValue in keyValues">{{key}} </span> 
      </span> 
     </li> 
    </ul> 
</div> 

Hier sehen Sie, in Ihrer ursprünglichen ngRepeat wir die Array KeyValues ​​mit allen Werten von Posten der Tasten über die Funktion initialisiert oben definiert . Dann, ng-Wiederholung durch, und Sie haben alles gedruckt, ohne zu wissen, was sie sind. Hier

ist ein Fiddle mit daran zu arbeiten: http://jsfiddle.net/RkykR/2771/

+0

Ich glaube ich sehe, wohin du gehst, aber Fiddle scheint nicht zu funktionieren. Ich habe returnAllkeyValues ​​im eckigen Controller hinzugefügt und es ist abgestürzt. Bitte neu anschauen. Danke, –

+0

Ich begann dies mit einer CSV-Datei und mit Ihrem Vorschlag bin ich zurück zum ursprünglichen csv mit obj in String zurückgegeben wurde. Ich habe nach etwas mehr Kontrolle gesucht, um daraus einen Tisch zu machen. Ich denke, arr.push (obj [x [i]] erstellt die obj zurückgegeben: "John 25 Junge Objekt: 3" –

+0

Sorry, ich habe den falschen Fiddle-Link verwendet. Dieser sollte jetzt funktionieren. –