【AngularJS】フィルタをかけようとorderByしたけど効かなかった
Resource {0: Object, 1: Object} 0: Object content: "こっちが古いよ" id: 1 target_date: "2016-02-09 00:00:00" title: "ひとつめ" 1: Object content: "こっちが新しいよ" id: 2 target_date: "2016-02-11 00:00:00" title: "ふたつめ"
みたいなコールバックが来た時に、target_dateが最新のものから表示させようと
<li ng-repeat="result in results | orderBy: '-target_date'">
としていたが全然ソートされなかった。
原因は下記にもあるように、配列じゃないからソートされなかった。
参考
AngularJSのng-repeatのorderByはArrayじゃないとソートされない
javascript - How to orderby in AngularJS using Nested property - Stack Overflow
AngularJS
色々方法はあるだろうけど、
$scope.results = _.sortBy(results[0]);
というように$scopeのプロパティに入れる時にソートをかけることで上手くいった。
バッドノウハウっぽいけど今回はこれでよし!
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 42 }, { 'user': 'barney', 'age': 34 } ]; _.sortBy(users, function(o) { return o.user; }); // → objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] _.sortBy(users, ['user', 'age']); // → objects for [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]