Angular ng-repeat如果内层过滤器没有值,则隐藏外层过滤器

问题描述:

如果没有生成的值,我想在特定值的ng-repeat过滤中隐藏外层过滤器div由内部过滤器,这是可能的?Angular ng-repeat如果内层过滤器没有值,则隐藏外层过滤器

<div class="feedEntry" ng-repeat="entry in entries | orderBy:'-' track by $index" ng-if="entry.userID" ng-if="entry.hasFollowing"> 
    {{entry.hasFollowing}} 
    <span ng-repeat="follow in follows | filter:{following:entry.userID, follower:currentUser.userID}"> 
     <div class="feedUserSubmission" ng-init="entry.hasFollowing = true"> 
      {{entry.name}} 
     </div> 
    </span> 
</div> 

嗯,这里是一个解决办法,如果我不能找到一个解决方案,我会怎么做。

您只需执行内部ng-repeat中的$parent.showParent = true,该内部ng-repeat仅在内部ng-repeat的过滤结果影响外部ng-repeat范围时执行。

然后你会做这样的事情ng-show="showParent"在外NG重复

<div class="feedEntry" ng-repeat="entry in entries | orderBy:'-' track by $index" ng-show="showParent" ng-if="entry.userID" ng-if="entry.hasFollowing"> 
    {{entry.hasFollowing}} 
    <span ng-repeat="follow in follows | filter:{following:entry.userID, follower:currentUser.userID}" ng-init="$parent.showParent = true"> 

     <div class="feedUserSubmission" ng-init="entry.hasFollowing = true"> 
      {{entry.name}} 
     </div> 
    </span> 
</div> 
+0

这并没有工作,这一切都藏 – Jordash

+0

@Jordash看看这个[小提琴](http://jsfiddle.net/tbb3os6a/)。我做了同样的事情,但在ng-repeat中使用ng-init –

+0

这非常棒! – Jordash

如果你想隐藏的所有内容意父DIV:

<div ng-show="(follows | filter:filterByGroup(entry)).length"> 
    <div class="feedEntry" ng-repeat="entry in entries | orderBy:'-' track by $index" ng-if="entry.userID" ng-if="entry.hasFollowing"> 
     ... 
    </div> 
</div> 

你可以利用NG隐藏与内过滤条件

NG隐藏=“(如下| filter:{following:entry.userID,follower:currentUser.userID})。length == 0“

eg

<div class="feedEntry" ng-repeat="entry in entries | orderBy:'-' track by $index" ng-if="entry.userID" ng-if="entry.hasFollowing" ng-hide="(follows | filter:{following:entry.userID, follower:currentUser.userID}).length == 0"> 
    {{entry.hasFollowing}} 
    <span ng-repeat="follow in follows | filter:{following:entry.userID, follower:currentUser.userID}"> 
     <div class="feedUserSubmission" ng-init="entry.hasFollowing = true"> 
      {{entry.name}} 
     </div> 
    </span> 
</div>