2016-05-17 10 views
1

私は日付でアイテムに組み込みの角度フィルタOrderByを使用していますが、DOMで期待どおりに動作しますが、配列自体が更新されるため、新しい順序で作業できます。アイテム。AngularJS OrderByの更新元の配列

誰でもこれを達成するためのアイデアはありますか?

ありがとうございました。

P.S. AngularJS 1.3.14を使用しています。

+0

ng-repeatは配列には影響しませんが、表示されるもののみです。実際の配列をソートするには、コントローラーで配列をソートする必要があります。 –

+0

コードを表示できますか? – Matheno

答えて

2

DOMにバインドする前に、配列をコントローラから並べ替える必要があります。これは、Angularが各ダイジェストサイクルで注文を再計算する必要がないため、より効果的です。

$scope.myOrderedArray = order($scope.myArray); 

そしてDOM

<div ng-repeat="item in myOrderedArray"> ... </div> 
+0

ありがとうございました。ありがとうございました – Axl

2

にフィルタは、配列のソートされたコピーを返すので、あなたは自分のスコープに割り当てし、ソートされた配列の参照を保持することができます。

あなたのコントローラで$フィルタサービスを挿入し、このようにプログラム的にそれを使用します。

var orderBy = $filter('orderBy'); 
$scope.array = orderBy(unsortedArray, expression); 

このフィルタの詳細はhereを見つけることができます。

もちろん、ソート式が動的な場合は、変更するたびに配列の参照を更新する必要があります。これは常に理想的ではありませんが、少量のデータでは絶対に実行可能です。

+0

ありがとうございました。 – Axl

+0

他の答えに素敵な追加、ありがとう – floribon