2017-02-12 5 views
0

selectng-options과 함께 사용하여 드롭 다운을 채우려 고합니다. 이것은 내 JSON입니다JSON에서 Angular JS ng-options를 선택하는 중

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

그리고이 <select class="chosen-select" ng-model="selectedValue" ng-options="x.HealthCondition for x in myResults.Food" multiple chosen></select> 내 선택이고 내가지고있어 결과가 [object Object],[object Object],[object Object],[object Object],[object Object]

내가 건강 상태 이름의 목록을 얻으려고합니다! 어떤 도움이라도 대단히 감사하겠습니다. 이것을 몇 시간 동안 우연히 보았습니다. 나는 Angular Chosen 지시어를 사용하고있다. x.Name과 같은 이름 필드를 사용하지만 HealthCondition Name을 원한다면 올바르게 작동합니다.

도움이 될 것입니다.

답변

0

일부 관측 :

다음보기에서 다음을 사용

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

  • JSON이 유효하지 않습니다. Applename 키에 대한 문자열이어야합니다.
  • Food 배열을 ng-options에 반복하면 HealthCondition이어야합니다.

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

@ 감사합니다! 이것은 효과가있다! 내가 한 유일한 일은 myResults라는 이름으로 jsonObj를 변경하는 것입니다. – kurtg

+0

@kurtg 다른 사람에게도 유용 할 수 있도록 올바른 것으로 표시해 주시겠습니까? –

+0

ok 나는 미안하다, 꽤 stackoverflow에 새로운, 어떻게 보지 못했지만 위아래 화살표 사이의 수표를 클릭하고 그것을 할 것 같았다! 다시 한 번 감사드립니다. – kurtg

0

이 문제는 데이터가 현재의 형식으로 NG-옵션을 사용할 수없는 것입니다 <select class="chosen-select" ng-model="selectedValue" ng-options="x.Name as x.Name for x in myResults.Food.HealthCondition" multiple chosen></select>

+0

에 대한 이름으로 <선택 클래스 = "선택 - 선택"NG 모델 = "selectedValue"NG-옵션 = "x.Name해야한다 x myResults.Food.HealthCondition "multiple chosen> – Kalyan

+0

실제로 사용 된 지시문의 [documentation] (http://adityasharat.github.io/angular-chosen/)을 확인하십시오. –

+0

감사합니다 @ MonicaBozhinova하지만 그건 나를 위해 작동하지 않았다. Rohit의 솔루션이 효과가있었습니다. – kurtg

0

을보십시오. HealthCondition 배열을 속성으로하는 여러 개체 대신 단일 배열로 사용 가능한 HealthConditions를 줄여야합니다. 컨트롤러에서

당신과 같이 하나의 배열로 데이터를 매핑해야합니다

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

Teddy에게 감사하지만이 방법은 효과가 없습니다. @ Rohit의 해결책이 나를 위해 일했습니다. 그는이'x.Name을 x에 대한 x.Name으로 제안했습니다. 내 ng-options에서 myResults.Food [0] .HealthCondition'으로 제안했습니다. JSON 구조로 작동하지 않는다고 말하는 사람이 처음은 아닙니다. 그래서 나는 이것이 효과가 있다는 것에 놀랐다. – kurtg

+0

당신이 해결책을 찾았다는 소식을 듣고 기쁘게 생각합니다. 나는 당신 자신의 데이터가 결과에 단지 하나의 식품 요소 이상을 가질 것이며 모든 식품 품목에 대해 가능한 모든 건강 상태를 표시하고자한다고 생각합니다. –