1

正常にソートされた ng-repeat を使用してテーブルにいくつかのデータがあります。最初のフィドルを見てください。

http://jsfiddle.net/HB7LU/10201/

<tr ng-repeat="each in list | orderBy:predicate:reverse">

次の行に同じ名前がある場合、名前を繰り返さずに、最初の列 (名前) を持つ方法を見つけようとしています。2 番目のフィドルを参照してください。

http://jsfiddle.net/HB7LU/10204/

<td ng-show="list[$index].name != list[$index-1].name">{{each.name}}</td>

これは、列がソートされるまで最初は機能します。ヘッダーをクリックすると、列は並べ替えられますが、データは正しくありません。これは、$index に list を使用しているためです。代わりに何か他のものを使用する方法があるかどうかわかりませんか? または、正直に言うと、これを行うためのより良い方法があるかどうか疑問に思っています。

さらに情報が必要な場合はお知らせください。ありがとう!T

4

1 に答える 1

1

これは$index、アイテムと繰り返しアイテムを並べ替えたときの変更が、前または次のものではない可能性があるためです (ロジックによって保証されているためlist[$index].name != list[$index-1].name)。ng-initng-inited 値は監視されないため、並べ替えによって変更されないため、ng-repeat の初期インデックスを設定/エイリアスするために使用できます。

 <tr ng-repeat="each in list | orderBy:predicate:reverse" ng-init="index= $index">

フィドル

ドキュメントから

ngInit の唯一の適切な使用法は、以下のデモに見られるように、ngRepeat の特別なプロパティをエイリアシングすることです。この場合以外に、ngInit ではなくコントローラーを使用して、スコープの値を初期化する必要があります。

于 2015-01-18T23:41:13.653 に答える