[英]How to sort array in AngularJS in ng-options?
我有這個簡單的數組:
$scope.myArray = ['3', '1', '2', '4'];
在我的模板中,我使用ng-options
創建一個選擇列表:
<select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select>
但是按-value
排序不起作用。 我如何可以降序排列此數組?
orderBy參數可以是一個屬性,因此您可能只需要:
<select ng-options="key as value for (key, value) in myArray | orderBy: '-toString()'">
參見這里的例子
您可以使用訂單功能。 您正在使用“字符串”作為整數。 如果您確實想要這樣做,則下面的方法將起作用。 如果您不這樣做,則可以刪除parseInt
並使用item。 我還匹配了您的key as value
您不需要任何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);
}
});
這是一個解決方案。 想法是使用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"]
{{ orderBy_expression | orderBy : expression : false}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.