繁体   English   中英

使用ng-options angular js过滤json对象

[英]filtering a json object with ng-options angular js

我在使用AngularJS将json对象过滤到选择表单元素中遇到麻烦。 这是到目前为止我得到的。 我很沮丧,任何帮助将不胜感激。

app.js:

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' }];
});

singlepageapp.html:

<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>

您总是可以只重复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>

这样,您可以直接使用范围值设置值。

希望这对您有所帮助!

您应该已经指定了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

注意:ngOptions为元素提供迭代器功能,当您希望将选择模型绑定到非字符串值时,应使用该元素而不是ngRepeat。 这是因为选项元素目前只能绑定到字符串值。

我更新了jsFiddle http://jsfiddle.net/5MQ9L/1/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM