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>
答
如果你想隐藏的所有内容意父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>
这并没有工作,这一切都藏 – Jordash
@Jordash看看这个[小提琴](http://jsfiddle.net/tbb3os6a/)。我做了同样的事情,但在ng-repeat中使用ng-init –
这非常棒! – Jordash