オブジェクトの非常に単純な配列があり、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である必要があります。
2番目のパラメーターをプロパティ名name
として渡し、そのフィルターされた結果を必要なスコープ変数に割り当てます。したがって、UIでフィルタリングを行う必要はありませんng-repeat
出力。
$scope.person = $filter('orderBy')(person, 'name');
<div ng-repeat="p in person">
{{p.name}}
</div>
ビューで表示したい場合は、スコープ変数の1つでそのプロパティを保持する必要があります。または、レコードを表示しながら、クライアント側でもこの単純なフィルタリングを実行できます。
<div ng-repeat="p in person | orderBy: 'name'">
{{p.name}}
</div>
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');
$scope.person = $filter('orderBy')($scope.person , 'name', true);
降順の場合はtrue、昇順の場合はfalse
例:
<tr ng-repeat="friend in friends | orderBy:'-age'">
<td>{{friend.age}}</td>
<td>{{friend.name}}</td>
</tr>
式の前に「-」記号を使用します