2014-06-13 27 views
5

Ho un array di oggetti ...orderBy numero js angolari

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

ora ho un ng-repeat nel mio HTML per iterare su questo array di oggetti. Voglio che ordinare l'età:

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

Nel mio JS sto convertendo i miei età per intergers ....

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

angolare volontà non ordina per età, mi sarei aspettato di vedere ..

bill, 15 
bob, 25 
jen, 45 

Ma invece sono dappertutto. Che cosa sto facendo di sbagliato?

Grazie!

risposta

9

Prova avvolgendo -age tra virgolette singole, come '-age'

1

Prova questo tizio .....

ng-repeat = "utente in userObjects | orderBy: 'età'">

0

Crescente ordine: -

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

Discendente ordine: -

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

Il PO è già compreso che il codice nella loro interrogazione. In che modo questo aiuta con qualcosa? – ryanyuyu

+0

@ryanyuyu Ha l''età' tra virgolette, che è la risposta corretta. –

6

Non necessario per convertire stringhe in numeri in JS.

Make it in puro angolare con filtro:

| orderBy: '- 1 * age'`

+0

Incredibile !!! funziona come un fascino! –

5

Il seguente convertirà' l'età 'in numerico e ordinerà in ordine crescente.

| 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>

Problemi correlati