簡體   English   中英

如何在ng-options中的AngularJS中對數組排序?

[英]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);
    }
});

http://jsfiddle.net/raLu20o9/

這是一個解決方案。 想法是使用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}}

該解決方案是否更多有關https://docs.angularjs.org/api/ng/filter/orderBy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM