2014-06-13 9 views
5

Ich habe ein Array von Objekten ...orderBy Zahl Winkel js

var userObjects =[ 
{userName: bob, 
age: "25", 
gender: "m" 
}, 
{userName: bill, 
age: "15", 
gender: "m" 
}, 
{userName: jen, 
age: "45", 
gender: "f" 
}, 
] 

Jetzt habe ich eine ng-Wiederholung in meinem HTML über dieses Array von Objekten zu durchlaufen. Ich will es das Alter sortieren:

<tr ng-repeat="user in userObjects | orderBy:-age"> 

In meinem JS ich mein Alter zu intergers bin Umwandlung ....

data.forEach(function(user){ 
    user.age= parseFloat(user.age); 
} 

Angular nicht sortiert nach Alter, würde ich erwarten, zu sehen .. .

bill, 15 
bob, 25 
jen, 45 

Aber stattdessen sind sie überall. Was mache ich falsch?

Danke!

Antwort

9

Versuchen -age in einfache Anführungszeichen, wie '-age'

1

Versuchen Sie diesen Kerl .....

ng-repeat = "Benutzer in userObjects | orderBy: 'Alter'" Verpackung>

0

Aufsteigend Reihenfolge: -

<div ng-repeat="person in persons | orderBy:'age'"> 

absteigender Reihenfolge: -

<div ng-repeat="person in persons | orderBy:'-age'"> 
+5

Die OP ist mit bereits diesen Code in ihre Frage. Wie hilft das bei allem? – ryanyuyu

+0

@ryanyuyu Er hat das "Alter" in Anführungszeichen, das ist die richtige Antwort. –

6

Nicht erforderlich, um Zeichenfolgen in Zahlen in JS zu konvertieren.

es in reiner Angular Stellen mit Filter:

| orderBy: '- 1 * age'`

+0

Erstaunlich !!! klappt wunderbar! –

5

Im Folgenden wird das' Alter 'in numerisch konvertiert und in aufsteigender Reihenfolge sortiert.

| orderBy : 'age/1'

0

angular.module('myApp', []).controller('namesCtrl', function($scope) { 
 
    $scope.names = [ 
 
     {name:'Jani',age:'18'}, 
 
     {name:'Carl',age:'32'}, 
 
     {name:'Margareth',age:'21'}, 
 
     {name:'Hege',age:'14'}, 
 
     {name:'Joe',age:'36'}, 
 
     {name:'Gustav',age:'42'}, 
 
     {name:'Birgit',age:'28'}, 
 
     {name:'Mary',age:'58'}, 
 
     {name:'Kai',age:'26'} 
 
     ]; 
 
});
<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="namesCtrl"> 
 

 
<p>Looping with objects:</p> 
 
<ul> 
 
    <li ng-repeat="x in names | orderBy:'age'"> 
 
    {{ x.name + '-' + x.age }} 
 
    </li> 
 
</ul> 
 

 
</div> 
 

 
</body> 
 
</html>