我无法使用AngularJS将json对象过滤为select表单元素。这是我到目前为止所得到的。我很难过,任何帮助都会受到赞赏。
var app = angular.module('app', []);
app.controller('MainCtrl', function($scope) {
$scope.showItems = null;
$scope.items = [
{ id: '023', name: 'foo' },
{ id: '033', name: 'bar' },
{ id: '010', name: 'blah' }];
});
<html data-ng-app="app">
<body data-ng-controller="MainCtrl">
<form>
<select data-ng-model="showItems" data-ng-options="item as item.name for item in items"></select>
</form>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<script src="app.js"></script>
</body>
</html>
<select data-ng-model="selectedItem" ng-options="item as item.name for item in items" class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">foo</option>
<option value="1">bar</option>
<option value="2">blah</option>
</select>
<select data-ng-model="selectedItem" ng-options="item as item.name for item in items" class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="023">foo</option>
<option value="033">bar</option>
<option value="010">blah</option>
</select>
答案 0 :(得分:1)
您可以随时重复html中的选项,而不是使用data-ng-options。我做了一个小提琴,做你想做的事:http://jsfiddle.net/5MQ9L/
<select ng-model="selected">
<option value="{{item.id}}" ng-repeat="(i,item) in items"> {{item.name}}
</option>
</select>
这样您就可以直接使用范围值设置值。
希望这有帮助!
答案 1 :(得分:0)
您应该指定item.id
<select ng-model="selected" ng-options='item.id as item.name for item in items'> </select>
来自http://docs.angularjs.org/api/ng/directive/select
注意:当您希望将select模型绑定到非字符串值时,ngOptions为元素提供了一个迭代器工具,应该使用该工具代替ngRepeat。这是因为选项元素目前只能绑定到字符串值。
我更新了jsFiddle http://jsfiddle.net/5MQ9L/1/