Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用AngularJS对下拉列表中的选项进行排序?_Angularjs - Fatal编程技术网

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

如何使用AngularJS对下拉列表中的选项进行排序?,angularjs,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="

我有一个下拉列表,其中包含用于选项的对象数组:

<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>
...
"ng-options="dataValue.Id as dataValue.Name for (dataKey, dataValue) in Types" | orderBy:'Id'"
<select class="auc-form-control" ng-options="dataValue.Id as dataValue.Name for (dataKey, dataValue) in Types | orderBy:getSortValue" ng-model="name"></select>
0
1.
10
11
...

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

可以这样使用的orderBy筛选器如何:

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

请用您的示例查看此

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

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

$scope.getSortValue = function (item) {
  return +item.Id; // convert string to number
};
然后将其与
orderBy
过滤器一起使用,如下所示:

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


示例Plunker:

您能展示一下
类型的对象是什么样子的吗?您在这里缺少信息。正如Artyom在他的回答和评论中已经指出的,[0,1,10,11]是自然顺序,即数字。从你的问题来看,你不清楚你想要的对象是什么,或者你认为什么是“自然的”。请澄清。