2016-06-14 1 views
0

ngRepeatと組み合わせて使用​​できるorderByディレクティブでいくつかの数字列を逆順に並べています。負の数の文字列をAngularJSの 'orderBy'で並べ替える

<div ng-repeat="item in standings| orderBy:['-points', '-gd', 'team_name']"> 
     <p>{{item.gd}} 
</div> 

だから、 'ポイント'、そして 'GD'(得失点差)、そして 'TEAM_NAME'(アルファベット順)(優先度の高い順に)発注されます。

gdの値は降順で正しく並べ替えられます。私が持っている問題は負の数値です。この例では、数値は文字列として返され、orderBy関数はが"-1"未満であると解釈しますが、その逆です。

ng-repeatを数値に解析して、特にマイナスの数字による問題を解決するにはどうすればよいですか?

フィルタを作成すると考えました(例:{{item.gd | *filterHere* }})が、元の値を整数として取る必要がある最初のng-repeatディレクティブでは表示されません。

ご協力いただければ幸いです。


UPDATE:ビューで

app.filter('stringToInteger', function() { 
     return function(input) { 
      angular.forEach(input, function(value) { 
       parseInt(value.gd); 
      }) 
      }; 
     return input; 
    }); 

私はこのフィルタを試してみましたが、私は私のNGリピートでそれを呼び出したとき、それは何も返さない

<p ng-repeat="item in standings | orderBy: '-gd' | stringToInteger">GD = {{item.gd}}</p> 
+0

?これをparseInt()で簡単に行うことができます:http://www.w3schools.com/jsref/jsref_parseint.asp – Mistalis

+0

ありがとうございました。私はカスタムフィルタでこれを使ってみましたが、うまくいきませんでした。私の更新を見てください... – Paulos3000

答えて

2

フィルタは、 このような。

app.filter('stringToInteger', function() { 
    return function(input) { 
     angular.forEach(input, function(value) { 
      value.gd = parseInt(value.gd); 
     }) 
    return input; 
    }; 
}); 

このように使用します。

<tr ng-repeat="team in teams | stringToInteger | orderBy:'-gd'"> 

もっと参考になるように、プランカのリンク。あなたはJavaScriptで直接int` `に` standing.gd`を設定しないのはなぜ

https://plnkr.co/edit/GRfMJnRdT1Gu5RXO9elA?p=preview

+0

ありがとう - しかし私はこれを試して何も返しませんでした。私もバリエーションを試しました(更新を見てください)が、まだng-repeatは何も返しませんでした...いずれの構文で何が間違っているのか分かりますか? – Paulos3000

+0

こんにちは、私があなたに与えた大胆なリンクは実用的な例だと思います。あなたもそれを試してみましたか? – Deep

+0

変換された数値を戻さないコードでの問題は、答えに更新されたコードとプランナーを使用してください。 – Deep

関連する問題