2016-03-25 10 views
0

2つの重複した部署があるタスクの配列がありますが、ng-repeatに2番目の重複レコードを表示したくありませんが、最初のレコード私は重複していても見たい。 ここに私のコードは、誰かが私が間違っていると私に伝えることができます。angularjsのng-repeatで同じデータのhtml要素を非表示にする

<tr ng-repeat="t in item.requisitionTask track by t.id"> 
<td> 
<div ng-hide="!$first ? item.requisitionTask[$index-1].department.departmentCode==$index.department.departmentCode : false"> 
{{t.department.departmentName}}</div> 
</td> 
+2

'$ index.department.departmentCode' - 私は' $ index'変数はそのような性質を持っていると思ういけない、それは単に数です。 – tymeJV

+0

このような巨大な状態が見られるときは、SCREAMSをtrue/falseを返すスコープ付き関数に入れることができます。 –

答えて

0

特にデータを対象にして解決しました。

<td><div ng-hide="!$first ? item.requisitionTask[$index-1].department.departmentCode==item.requisitionTask[$index].department.departmentCode : false"> 
1

は、私はあなたが前のアイテムは、あなたの現在の項目と同じdepartmentCodeが含まれている場合は、データを非表示にすると思われます。私のコメントで述べたように、このロジックをコントローラのスコープ上の関数に移動する必要があります。

お使いのコントローラで
<tr ng-repeat="t in item.requisitionTask track by t.id"> 
    <td> 
    <div ng-hide="isNotFirstOrSameCodeAsPrevious($index)"> 
     {{t.department.departmentName}} 
    </div> 
    </td> 
</tr> 

function isNotFirstOrSameCodeAsPrevious($index) { 
    if ($index === 0) return false; 

    return item.requisitionTask[$index - 1].department.departmentCode === 
     item.requisitionTask[$index].department.departmentCode; 
} 
+0

ご協力いただきありがとうございます。実際、私は比較する前と同じように、特に$ indexをターゲットにしていませんでした。あなたのansはまた、何らかの解決策を縫っています。 –

+0

@RohanSampat私はあなたと同じ答えを出しました:)。論理は同じです。違いは、あなたがあなたの表現を踏んでいくことはできないが、私の答えを一歩進めることができ、トラブルシューティングとメンテナンスがはるかに簡単になるということです。さらに、私はそれがより読みやすいと思う。 –

関連する問題