web-dev-qa-db-fra.com

Comment ordonner par un tableau d'objets en ordre décroissant dans angularjs?

J'ai un tableau très simple d'objets et je veux le trier en utilisant $filter('orderBy') en javascript. D'une certaine manière, cela ne semble pas fonctionner. jsFiddle

Voici le code

var app = angular.module('myApp', []);

app.controller('myController', function($scope, $filter){
    var person = [{
  name : "Saras"
  },
  {
  name : "Arya"
  }];
  $filter('orderBy')(person, 'name');
  console.log(person);
});

Je ne comprends pas pourquoi je n'arrive pas à faire fonctionner ça? L'aide est appréciée. Et la solution devrait être en JS et non en HTML.

8
Saras Arya

Vous devez passer le 2e paramètre en tant que nom de propriété name, puis affecter ce résultat filtré à la variable de portée souhaitée où vous le souhaitez. Il n'y aura donc pas de filtrage à effectuer sur l'interface utilisateur ng-repeat production.

$scope.person = $filter('orderBy')(person, 'name');

<div  ng-repeat="p in person">
   {{p.name}}
</div>

Violon fourchu Ici


Si vous vouliez le voir en vue, vous devez conserver cette propriété sur l'une des variables de portée, ou plutôt vous pouvez également effectuer ce filtrage simple côté client tout en affichant les enregistrements.

<div  ng-repeat="p in person | orderBy: 'name'">
   {{p.name}}
</div>

Démo ici

8
Pankaj Parkar

L'ajout du préfixe + ou - sur le paramètre orderBy triera par + (ascendant) ou desc);

exemple:

<li ng-repeat="x in customers | orderBy : '-city'">
    {{x.name + ", " + x.city}}
</li>

plus sur: --- (http://www.w3schools.com/angular/ng_filter_orderby.asp

Ou si vous voulez le consoler.log, ajoutez simplement le nom comme paramètre dans les citations:

$filter('orderBy')(person, 'name');
8
Aleksandar Đokić

$scope.person = $filter('orderBy')($scope.person , 'name', true);

vrai pour l'ordre décroissant et faux pour l'ordre croissant

0
chiranjiv

Exemple:

<tr ng-repeat="friend in friends | orderBy:'-age'">
    <td>{{friend.age}}</td>
    <td>{{friend.name}}</td>
</tr>

Utilisez le symbole "-" avant votre expression