2017-02-12 3 views
0

Ich versuche eine select mit ng-options zu verwenden, um mein Dropdown zu füllen. Das ist mein JSONAngular JS ng-options Auswahlliste von JSON

{ "Food": [ { "Name": Apple, "HealthCondition": [ { "Name": "High Blood Pressure", "Eat": null }, { "Name": "High Cholesterol", "Eat": null }, { "Name": "Heart Disease", "Eat": null }, { "Name": "Osteoporosis", "Eat": null }, { "Name": "Digestive Disorder", "Eat": null } ] }

Und das ist mein select <select class="chosen-select" ng-model="selectedValue" ng-options="x.HealthCondition for x in myResults.Food" multiple chosen></select> und das Ergebnis, das ich bin immer ist [object Object],[object Object],[object Object],[object Object],[object Object]

Ich versuche, eine Liste der Gesundheitszustand Namen zu bekommen! Jede Hilfe würde sehr geschätzt werden. Darauf stundenlang gestanden. Ich verwende die Angular Chosen Direktive. Dies funktioniert korrekt, wenn ich nur das Feld Name wie x.Name verwende, aber ich möchte HealthCondition Name abrufen.

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Einige Beobachtungen:

  • Ihr JSON ist nicht gültig. Apple sollte eine Zeichenkette gegen den name Schlüssel sein.
  • Sie wiederholen das Food Array in ng-options es sollte HealthCondition sein.

DEMO

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

 
myApp.controller('MyCtrl',function($scope) { 
 
    $scope.jsonObj = { 
 
    "Food": [ 
 
    { 
 
     "Name": "Apple", 
 
     "HealthCondition": [ 
 
     { 
 
     "Name": "High Blood Pressure", 
 
     "Eat": null 
 
     }, 
 
     { 
 
     "Name": "High Cholesterol", 
 
     "Eat": null 
 
     }, 
 
     { 
 
     "Name": "Heart Disease", 
 
     "Eat": null 
 
     }, 
 
     { 
 
     "Name": "Osteoporosis", 
 
     "Eat": null 
 
     }, 
 
     { 
 
     "Name": "Digestive Disorder", 
 
     "Eat": null 
 
     } 
 
    ] 
 
}]}; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select class="chosen-select" ng-model="selectedValue" ng-options="x.Name as x.Name for x in jsonObj.Food[0].HealthCondition" multiple chosen></select> 
 
</div>

+0

Danke @Rohit! Das hat funktioniert! Das einzige, was ich getan habe, war, jsonObj in meinen Bereich namens myResults zu ändern. – kurtg

+0

@ kurtg Können Sie es bitte als richtig markieren, damit es auch für andere nützlich ist. –

+0

ok Ich tat das, entschuldige ziemlich neu zu stackoverflow, habe nicht gesehen, wie, aber klickte den Haken zwischen den Pfeilen nach oben und unten und das schien es zu tun! Danke noch einmal – kurtg

0

Versuchen <select class="chosen-select" ng-model="selectedValue" ng-options="x.Name as x.Name for x in myResults.Food.HealthCondition" multiple chosen></select>

+0

sollte Kalyan

+0

Nicht wirklich, überprüfen Sie die [Dokumentation] (http://adityasharat.github.io/angular-chosen/) der verwendeten Richtlinie. –

+0

danke @MonikaBozhinova, aber das hat nicht für mich funktioniert. Rohits Lösung hat funktioniert. – kurtg

0

Das Problem ist, dass Ihre Daten nicht in der Lage ist, in seinem aktuellen Format für ng-Optionen verwendet werden. Sie müssen die verfügbaren HealthConditions auf ein einzelnes Array anstatt auf mehrere Objekte mit einem HealthCondition-Array als Eigenschaft reduzieren.

In Ihrem Controller müssen Sie die Daten in einem einzigen Array abzubilden, wie so:

$scope.HealthConditions = myResults.reduce(function(arr, result){ 
    for(var i in result.HealthCondition){ 
     arr.push(result.HealthCondition[i]); 
    } 
    return arr; 
}, []); 

Und dann Ihrer Ansicht verwenden Sie die folgenden Schritte aus:

<select class="chosen-select" ng-model="selectedValue" ng-options="x.Name for x in HealthConditions" multiple chosen></select> 
+0

Danke Teddy, aber das hat nicht funktioniert. @ Rohits Lösung hat für mich funktioniert. Er schlug diesen 'x.Name als x.Name für x in myResults.Food [0] .HealthCondition' in meinen ng-Optionen vor. Sie sind nicht die erste Person, die mir sagt, dass sie nicht mit meiner JSON-Struktur funktionieren würde Es ist so, dass ich überrascht war, dass das funktioniert hat. – kurtg

+0

Freut mich zu hören, dass Sie eine Lösung gefunden haben. Ich stelle mir vor, dass andere wie ich selbst davon ausgehen, dass Ihre Daten mehr als nur ein Lebensmittelelement in den Ergebnissen enthalten und Sie alle möglichen Gesundheitszustände für jedes Nahrungsmittel anzeigen möchten. –

Verwandte Themen