我有這個簡單的數組:如何在ng選項中對AngularJS中的數組進行排序?
$scope.myArray = ['3', '1', '2', '4'];
在我的模板,我用ng-options
創建一個選擇列表:
<select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select>
但是,-value
排序不起作用。我如何按降序排列這個數組?
我有這個簡單的數組:如何在ng選項中對AngularJS中的數組進行排序?
$scope.myArray = ['3', '1', '2', '4'];
在我的模板,我用ng-options
創建一個選擇列表:
<select ng-options="key as value for (key, value) in myArray | orderBy : '-value'"></select>
但是,-value
排序不起作用。我如何按降序排列這個數組?
{{ orderBy_expression | orderBy : expression : false}}
您可以使用命令FUNC。您正在使用「字符串」作爲整數。如果你真的想這樣做,下面的工作。如果你不能刪除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);
}
});
這是一個解決方案。這個想法是使用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"]
介意解釋downvote? –
這個想法很好。我會改進它使用過濾器,而不是內聯(它更可讀)。如果你想要一個例子http://stackoverflow.com/questions/30576111/reverse-scroll-direction-with-180-flipped-scroll-list/30576470#30576470我們只需要知道它是否回答這個問題...直到我們不知道真實的。 – Okazari
我更新的下方添加了一個簡單的排序功能。 – Nix