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.
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>
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');
$scope.person = $filter('orderBy')($scope.person , 'name', true);
vrai pour l'ordre décroissant et faux pour l'ordre croissant
Exemple:
<tr ng-repeat="friend in friends | orderBy:'-age'">
<td>{{friend.age}}</td>
<td>{{friend.name}}</td>
</tr>
Utilisez le symbole "-" avant votre expression