如何使用 Angular 在选择下拉列表中对列表进行排序?
这是角度控制器:
var app = angular.module("app", []);
app.controller('Ctrl', function($scope, $filter, $http) {
$scope.options= [
{
"id": 823,
"value": "81"
},
{
"id": 824,
"value": "77"
},
{
"id": 825,
"value": "152"
},
];
});
和 html:
<h4>Angular-xeditable Editable row (Bootstrap 3)</h4>
<div ng-app="app" ng-controller="Ctrl">
<select ng-model="test" ng-options="v.id as v.value for v in options | orderBy: value"></select>
</div>
现在的顺序是:81、77、152
我想要:77,81,152
我该怎么做?
Jsfiddle to test
谢谢
您的值是字符串,因此除非您将它们转换为整数,否则它们不会自然排序。您可以通过创建自己的过滤器或在$scope上定义简单的排序函数来转换它们:
小提琴
<select
ng-model="test"
ng-options="v.id as v.value for v in options | orderBy: naturalOrder"
></select>
$scope.naturalOrder = function(item){
return parseInt(item.value, 10);
};
您需要在
orderBy 中的字段名称周围加上单引号。orderBy 的第一个参数是一个排序表达式字符串。
in options | orderBy:'value'
您可以通过在字段名称前添加+
或-
来指示初始排序方向来扩展此内容。您还可以在排序表达式后提供布尔值,以启用排序方向的切换。
<div ng-init="desc=true">
...
in options | orderBy:'+value':desc