如何使用AngularJS对下拉列表中的选项进行排序?

时间:2014-08-13 16:27:52

标签: angularjs

我有选项对象数组的下拉列表:

<select class="auc-form-control" ng-options="dataValue.Id as dataValue.Name for (dataKey, dataValue) in Types" ng-model="name">
</select>

选项按ID排序:

<option value="0">0</option>
<option value="1">1</option>
<option value="10">10</option>
<option value="11">11</option>
...

如何以自然的方式对选项进行排序? [1,2,3,...]

2 个答案:

答案 0 :(得分:2)

您的Id属性似乎是字符串(而不是数字)。

在这种情况下,您必须使用自定义getter来获取排序值。例如:

$scope.getSortValue = function (item) {
  return +item.Id; // convert string to number
};

然后将其与orderBy过滤器一起使用,如下所示:

<select class="auc-form-control" ng-options="dataValue.Id as dataValue.Name for (dataKey, dataValue) in Types | orderBy:getSortValue" ng-model="name"></select>

示例Plunker: http://plnkr.co/edit/TfVrfhaiuBKbPpHSqp4Q?p=preview

答案 1 :(得分:1)

如何使用orderBy过滤器:

"ng-options="dataValue.Id as dataValue.Name for (dataKey, dataValue) in Types" | orderBy:'Id'"

请在示例中看到 JSFiddle