2015-04-24 87 views
0

我在另一个对象内部有一个数组对象。所以,在我的html中有两个嵌套的ng-repeat。我试图隐藏标签数据如果行动不是“更改” 为前。在下面的例子中,最后一行“更改的L3”不应该显示。如何根据内部数组值对外部数组记录进行过滤

我的范围数据:

$scope.groups = 
    [{ 
     "label": "L1", 
     "tabledata": [{ 
         "FIELDNAME": "C1 Entity", 
         "SCREEN": "A", 
         "ORIGINALVALUE": "NA", 
         "ACTION": "Changed", 
         "NEWVALUE": "Something", 
         "TYPEACT": "RB" 

        }, 
        { 
          "FIELDNAME": "C2 Entity", 
          "SCREEN": "A", 
          "ORIGINALVALUE": "NA", 
          "ACTION": "Changed", 
          "NEWVALUE": "SSSS", 
          "TYPEACT": "RB" 

         } 
         ] 

    }, 
    { 
     "label": "L2", 
     "tabledata": [{ 
         "FIELDNAME": "B1 Entity", 
         "SCREEN": "B", 
         "ORIGINALVALUE": "NA", 
         "ACTION": "Changed", 
         "NEWVALUE": "Something", 
         "TYPEACT": "RB" 

        }, 
        { 
         "FIELDNAME": "B2 Entity", 
         "SCREEN": "B", 
         "ORIGINALVALUE": "NA", 
         "ACTION": "Changed", 
         "NEWVALUE": "Something", 
         "TYPEACT": "RB" 

        } 
        ] 

    }, 

    { 
     "label": "L3", 
     "tabledata": [{ 
         "FIELDNAME": "A Entity", 
         "SCREEN": "C", 
         "ORIGINALVALUE": "NA", 
         "ACTION": "Added", 
         "NEWVALUE": "Something", 
         "TYPEACT": "RB" 

        }] 

    }] 

我的HTML在ACTION属性

<div ng-repeat="group in groups" > 
     <p><b>{{ "Changed " + group.label }}</b> 
       </p> 
     <table class="table table-bordered" > 
      <tbody > 
       <tr > 
        <th width ="20%"><b ng-bind="column1" ></b></th> 
        <th width ="40%"><b>Previous value </b></th> 
        <th width ="40%"><b ng-bind="column3" ></b> </th> 
        <th width ="10%"><b>Action </b></th> 
       </tr> 
       <!-- BEGIN: Inner ngRepeat. --> 
       <tr ng-repeat="endorsedata in group.tabledata | filter :{ACTION : 'Changed'} | orderBy:'FIELDNAME' " > 
        <td ng-init ="showRow = 1">{{ endorsedata.FIELDNAME }}</td> 
        <td>{{ endorsedata.ORIGINALVALUE }}</td> 
        <td>{{ endorsedata.NEWVALUE }}</td> 
        <!-- <td>{{ endorsedata.ACTION }}</td> --> 
       </tr> 
       <!-- END: Inner ngRepeat. --> 
      </tbody> 
     </table> 
    </div> 

我想隐藏标签,如果有比其他值 '改变'。这如何实现?

Plunker Here

编辑: Plunker链接更新。

+1

是的,这并不困难,如果你创建一个过滤器,那么它的内部使用'$ filter'就可以实现这个功能。非常坦率的。看看'$ filter'源代码 –

回答

1

在这里,我们去的话,这应该做你想做的:plunker

基本上,创建了相同的重载一个过滤器的角$filter。然后在每个tabledata里面使用一个过滤器选项。

如果过滤后的数组与原始数组不同,那么我们可以安全地说,发现了某种东西。您可以轻松修改此以满足您的确切需求。

该示例显示了如何通过子数组过滤最顶端的数组。

+0

好极了。谢谢 :) –

相关问题