Ich fülle ein Dropdown-Menü mithilfe von ng-options aus, das an einen Controller angeschlossen ist, der wiederum einen Dienst aufruft. Leider sind die eingehenden Daten ein Chaos und ich muss sie alphabetisch sortieren können.
Sie denken, dass so etwas $.sortBy
es tun würde, aber leider hat es Jack nicht getan. Ich weiß, dass ich es mit einer Hilfsmethode function asc(a,b)
oder ähnlichem über Javascript sortieren kann , aber ich weigere mich zu glauben, dass es keinen saubereren Weg gibt, dies zu tun, und ich möchte den Controller nicht mit Hilfsmethoden aufblähen. Es ist im Prinzip so grundlegend, dass ich nicht verstehe, warum AngularJS dies nicht hat.
Gibt es eine Möglichkeit, so etwas zu tun $orderBy('asc')
?
Beispiel:
<select ng-option="items in item.$orderBy('asc')"></select>
Es wäre äußerst nützlich, Optionen zu haben, orderBy
damit Sie tun können, was Sie wollen, wann immer Sie normalerweise versuchen, Daten zu sortieren.
selected
. In diesem Beispiel können Sie so etwas tun$scope.selected = $scope.friends[0]
. In dieser Geige finden Sie ein funktionierendes Beispiel.f.age as f.name for f in friends | orderBy:'name'
- Hier ist eine funktionierende Geige. Mehr zu ng-Optionen hier .<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></selected>
. Das Setzentrack by
nach der Bestellung Filter war nicht intuitiv und diese Antwort ist das Top-Suchergebnis von Google.Sie sollten in der Lage sein, Filter zu verwenden:
orderBy
orderBy
kann eine dritte Option für diereverse
Flagge akzeptieren .Hier wird das Element in umgekehrter Reihenfolge nach der Eigenschaft 'name' sortiert. Das zweite Argument kann eine beliebige Ordnungsfunktion sein, sodass Sie nach einer beliebigen Regel sortieren können.
@see http://docs.angularjs.org/api/ng.filter:orderBy
quelle
http://jsfiddle.net/Nfv42/65/
quelle
Für alle, die die Variable in der dritten Ebene sortieren möchten:
Sie können es so machen
quelle