我有这个简单的数组:
$scope.myArray = ['3', '1', '2', '4'];
在我的模板中,我使用ng-options
创建一个选择列表:
<select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select>
但按-value
排序不起作用。我如何按降序对这个数组进行排序?
答案 0 :(得分:2)
orderBy参数可以是属性,因此您可能只想:
<select ng-options="key as value for (key, value) in myArray | orderBy: '-toString()'">
请参阅here以获取示例
答案 1 :(得分:0)
您可以使用订单功能。您正在使用“字符串”作为整数。如果你真的想这样做,下面的方法就可以了。如果你不这样做,你可以删除parseInt
并使用项目。我也匹配了你不需要的key as value
。你可以value for value in data
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
<select
ng-options="key as value for (key, value) in data | orderBy :orderFunc"
ng-model="selectedId"></select>
{{ selectedId }}
</fieldset>
</div>
//js
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
$scope.data =['1','2','3','4','5','6','7','8','9'];
$scope.orderFunc = orderFunc;
function orderFunc(item){
return -1 * parseInt(item, 10);
}
});
答案 2 :(得分:0)
这是一个解决方案。我们的想法是在反转之前使用slice()制作数组的副本。这样就可以避免修改原始数据:
<select data-ng-model="data_selected" data-ng-options="key for key in data.slice().reverse()"></select>
,其中
$scope.data =["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"]
答案 3 :(得分:-2)
{{ orderBy_expression | orderBy : expression : false}}
上