0

我正在尝试使用selectwithng-options来填充我的下拉列表。这是我的 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 } ] }

这是我的选择<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指令。如果我只使用 Name 字段,这可以正常工作,x.Name但我想获取 HealthCondition Name。

任何帮助将不胜感激!

4

3 回答 3

0

一些观察:

  • 您的 JSON 无效。Apple应该是对name键的字符串。
  • 您正在迭代其中的Food数组ng-options应该是HealthCondition.

演示

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>

于 2017-02-13T12:42:30.013 回答
0

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

于 2017-02-12T20:58:09.110 回答
0

问题是您的数据无法以当前格式用于 ng-options。您需要将可用的 HealthCondition 减少为单个数组,而不是使用 HealthCondition 数组作为属性的多个对象。

在您的控制器中,您需要将数据映射到单个数组,如下所示:

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

然后在您看来使用以下内容:

<select class="chosen-select" ng-model="selectedValue" ng-options="x.Name for x in HealthConditions" multiple chosen></select>
于 2017-02-13T00:46:53.163 回答