如果过滤器在Angular中呈现子div为空,则隐藏父div

时间:2015-08-11 19:08:38

标签: angularjs filter ng-show

我找到了这个答案:AngularJS - hide parent element if children loop is empty (filtered)但它似乎对我不起作用。

我的代码完美无缺,是:

    <div ng-repeat="lawyer in articlesByAuthor | orderObjectBy:'lastname':false" ng-show="sortType=='author'">
    <h3>{{lawyer.fullname}}</h3>
    <br/>
        <table border="1">
            <thead>
                <tr>
                    <th style="padding: 2px 5px;">
                    Date Published 
                    </th>
                    <th style="padding: 2px 5px;">
                    Article
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="article in lawyer | filter:searchArticle">
                    <td style="padding: 2px 5px;white-space:nowrap;">
                    {{article.date | date:'MMM. dd, yyyy'}}
                    </td>
                    <td style="padding: 2px 5px;;">
                    <a href="{{article.link}}" target="_blank" ng-if="article.link != ''"><span ng-bind-html="renderHtml(article.title)" class="articlePage"></span></a><span ng-bind-html="renderHtml(article.title)" class="articlePage" ng-if="article.link == ''"></span>
                    </td>
                </tr>
            </tbody>
        </table>
        <br/><br/>
    </div>

但是,如果搜索呈现没有文章出现,我仍然看着一个名字超过它的空表。

基于以上所述,我尝试将整个事情包装成:

<div ng-show="(lawyer | filter:searchArticle).length">
</div>

无济于事。它无论如何都没有显示出来。我已将lawyer替换为articlearticlesByAuthor,但都无效。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

想出来。代码是对的。我只是把它放在错误的地方。我需要将条件ng-show放在第一个ng-repeat中。