2016-05-16 3 views
0

Ich bin ein JSON-Objekt über einen API-Dienst übergeben. Ich habe keine Kontrolle über das Format des JSON. Es ist jedoch ein gültiges JSON-Objekt:Verwenden der Punktnotation in Angular auf JSON-Objekt funktioniert nicht wie erwartet

{ 
    "Template" : { 
     "Parameters" : { 
      "Name" : "Test", 
      "Version" : "1.0" 
     }, 
     "Fields" : { 
      "Field" : [{ 
        "Prompt" : "Last Name:" 
       }, { 
        "Prompt" : "First Name:" 
       }, { 
        "Prompt" : "Middle Name" 
       }, { 
        "Prompt" : "ID Number:" 
       } 
      ] 
     }, 
     "Captures" : { 
      "Capture" : [{ 
        "Prompt" : "Picture" 
       }, { 
        "Prompt" : "Picture from file" 
       }, { 
        "Prompt" : "Signature" 
       } 
      ] 
     } 
    } 
} 

Was ich tun müssen, um eine Schleife durch eine Liste der Felder in dem Objekt, so dass ich Werte von dort angezeigt werden kann. Im Fall dieses Beispiels versuche ich, eine Liste von Eingabeaufforderungswerten aus den Feldern zu drucken.

http://jsfiddle.net/toddhd/0wbfpxkj/9/

<div ng-repeat="item in template.Fields.Field"> 
    {{item.Prompt}} 
    </div> 

Dies wird bei der JSFiddle oben, indem man viel besser erklärt.

Was ich will, ist einfach zu tun, um die Liste der Felder erhalten mit Punkt/Punkt-Notation, wie zum Beispiel:

template.Fields.Field

Aber das funktioniert nicht für mich. In dem Beispiel habe ich auch eine Reihe von ng-Wiederholungen gemacht, die nacheinander jede Sammlung durchlaufen. Das funktioniert und produziert das gewünschte Ergebnis, aber es ist ausführlich und hässlich.

Ich bin mir sicher, ich missverstanden nur die Struktur des JSON-Objekts selbst, oder vielleicht die richtige Punkt/Punkt-Notation, um dorthin zu gelangen. Aber ich kann es einfach nicht herausfinden. Kannst du bitte einen Blick darauf werfen und mir sagen, wo ich falsch liege?

Danke

+0

Nun .. Ihre Datenstruktur ist kein Array - es ist ein Objekt, mit vielen Feldern. Sie iterieren ein Objekt über 'ng-repeat =" (k, v) in obj "' - eine Geige mit der richtigen Wiederholungssyntax: http://jsfiddle.net/0wbfpxkj/11/ – tymeJV

+0

Bitte vermeiden Sie die Verwendung externer Ressourcen als Details deiner Frage. Bearbeiten Sie die relevanten Informationen und fügen Sie sie ein. – Amit

Antwort

4

Es ist nur ein weiteres Template fehlt. Es sollte template.Template.Fields.Field sein.

Ihre html sollte wie folgt aussehen:

<div ng-repeat="item in template.Template.Fields.Field">{{item.Prompt}}</div> 
+0

Nicht sicher, warum dies abgelehnt wurde, weil IT die richtige Lösung ist. Du denkst darüber nach, dieses "

{{item.Prompt}}
" hinzuzufügen, um deine Antwort zu vervollständigen. – Nasreddine

+0

@Nasreddine - Es ist downvoted, weil OP gefragt hat, wie man das Objekt dynamisch iteriert und dann die Arrays anzeigt - all dies zeigt, wie man das Array iteriert, wenn man einen Drilldown durchführt. – tymeJV

+0

@Nasreddine Edited die Antwort, danke! –

Verwandte Themen