161

サービスを呼び出しているコントローラーにフックされている ng-options を使用してドロップダウンを設定しています。残念ながら、入ってくるデータは混乱しているので、アルファベット順に並べ替える必要があります。

あなたは何かが$.sortByそれをするだろうと考えますが、残念ながらそれはジャックをしませんでした. ヘルパーメソッドなどを使用してjavascriptを介してソートできることは知っていますfunction asc(a,b)が、これを行うためのよりクリーンな方法がないと信じることを拒否し、ヘルパーメソッドでコントローラーを肥大化させたくありません。原則として非常に基本的なものなので、AngularJS にこれがない理由がわかりません。

のようなことをする方法はあり$orderBy('asc')ますか?

例:

<select ng-option="items in item.$orderBy('asc')"></select>

orderBy通常はデータを並べ替えようとするときはいつでも、必要に応じて実行できるように、オプションがあると非常に便利です。

4

4 に答える 4

344

Angular には、次のように使用できるorderByフィルターがあります。

<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name'"></select>

例については、このフィドルを参照してください。

が使用されている場合は、次のようにフィルターのtrack by後に表示する必要があることに注意してください。orderBy

<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></select>
于 2012-09-07T03:02:13.037 に答える
26

フィルターを使用できるはずです:orderBy

orderByreverseフラグの 3 番目のオプションを受け入れることができます。

<select ng-option="item.name for item in items | orderBy:'name':true"></select>

ここでは、アイテムは「name」プロパティの逆順でソートされています。2 番目の引数は任意の順序関数にすることができるため、任意の規則で並べ替えることができます。

@see http://docs.angularjs.org/api/ng.filter:orderBy

于 2012-09-07T03:14:40.590 に答える
2
var module = angular.module("example", []);

module.controller("orderByController", function ($scope) {
    $scope.orderByValue = function (value) {
        return value;
    };

    $scope.items = ["c", "b", "a"];
    $scope.objList = [
        {
            "name": "c"
        }, {
            "name": "b"
        }, {
            "name": "a"
        }];
        $scope.item = "b";
    });

http://jsfiddle.net/Nfv42/65/

于 2015-02-26T17:06:20.173 に答える