来自http GET方法的响应JSON如下所示
[
{
"1": "Open"
},
{
"2": "Expired"
}
]
如何在角度js的选择下拉框中绑定此数据。 我试过这个选项:
<select class="form-control" ng-model="selected" ng-options="item for item in data">
<option value="">----Select----</option>
</select>
但是我在下拉列表中找到了[object,object]。
答案 0 :(得分:5)
你可以简单地使用Array.reduce
将json数据转换为ng-options所期望的格式,
$scope.options = data.reduce(function(memo, obj) {
return angular.extend(memo, obj);
}, {});
<select ng-model="selected" ng-options="key as val for (key, val) in options"></select>
答案 1 :(得分:3)
你需要一个key,value
ng-repeat语法,因为你有未知或不同的键
你必须首先跟踪数组的两个重复,然后跟踪对象内的键
<select class="form-control" ng-model="selected" >
<option value="">----Select----</option>
<optgroup ng-repeat="v in values">
<option ng-repeat='(key,value) in v' value="{{key}}">{{value}}</option>
</optgroup>
</select>
<强>演示强>
选项中的值将为“open"
或”expired
“如果您替换0
,则可以将其更改为”1
“或”value={{value}}
“键与value="{{key}}"
app = angular.module('test',[]);
app.controller('testctrl',function($scope){
$scope.values =[{"1": "Open" },{"2": "Expired" }];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="testctrl" ng-app="test">
<span ng-if="selectedModel">{{selectedModel}}</span>
<select class="form-control" ng-model="selectedModel">
<option>----Select----</option>
<optgroup ng-repeat="v in values">
<option ng-repeat='(key,value) in v' value="{{value}}">{{value}}</option>
</optgroup>
</select>
</div>