web-dev-qa-db-ja.com

Angularjsでオブジェクトの配列を降順でorderByする方法は?

オブジェクトの非常に単純な配列があり、javascriptの$filter('orderBy')を使用してソートしたい。どういうわけか機能しないようです。 jsFiddle

ここにコードがあります

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

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

なぜこれが機能しないのか分かりませんか?ヘルプは大歓迎です。また、ソリューションはHTMLではなくJSである必要があります。

8
Saras Arya

2番目のパラメーターをプロパティ名nameとして渡し、そのフィルターされた結果を必要なスコープ変数に割り当てます。したがって、UIでフィルタリングを行う必要はありませんng-repeat出力。

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

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

Forked Fiddle ここ


ビューで表示したい場合は、スコープ変数の1つでそのプロパティを保持する必要があります。または、レコードを表示しながら、クライアント側でもこの単純なフィルタリングを実行できます。

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

デモはこちら

8
Pankaj Parkar

OrderByパラメーターに+または-プレフィックスを追加すると、+(昇順)または desc)で並べ替えられます。

例:

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

詳細:---(http://www.w3schools.com/angular/ng_filter_orderby.asp

または、console.logにしたい場合は、引用符でパラメータとして名前を追加するだけです:

$filter('orderBy')(person, 'name');
8

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

降順の場合はtrue、昇順の場合はfalse

0
chiranjiv

例:

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

式の前に「-」記号を使用します