我试图在嵌套ng-repeat的过滤器中使用第一个ng-repeat中的值。

特别是{{alpha.value}}。这在第一次重复中效果很好,请注意过滤器和h3标记。

但是,该表达式在第二个重复项中显示为文本,但又不是过滤器,因此重复项为空,因为它不匹配。我感觉好像缺少了非常明显的东西。有什么想法吗?谢谢

<div ng-repeat="alpha in alphabet" ng-hide="(tlds | filter: {group: '.{{alpha.value}}'}).length<1" ng-cloak="cloak">
    <h3>{{alpha.value}}</h3>
    <ul class="list-group">
        <li class="list-group-item" ng-repeat="tld in tlds | filter: {group: '.{{alpha.value}}'} | filter: {name: query} | orderBy: 'name'" ng-cloak="cloak">
            <a href="/downloads/pdftld/{{tld.pdf}}" target="_blank">{{tld.name}}</a>
        </li>
    </ul>
</div>


JS Fiddle损坏了http://jsfiddle.net/eminentstyle/v5g4u948/2/

如果我手动插入预期的表达式结果,在第20行过滤器:{group: '.c'},则可以看到第一部分http://jsfiddle.net/eminentstyle/kwmj5mtu/2/的预期结果。

最佳答案

我认为您想要这样:http://jsfiddle.net/v5g4u948/3/

<div class="container" ng-app="Tlds">
    <div class="page-header">
         <h1>Tlds</h1>

    </div>
    <div class="row">
        <div class="col-sm-12">
            <input type='search' class='form-control' placeholder='Search' ng-model='query' />
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12" ng-controller="TldsCtrl">
            <div ng-repeat="alpha in alphabet" ng-hide="(tlds | filter: {group: '{{alpha.value}}'} | filter: {name: query}).length<1" ng-cloak="cloak">
                 <h3>{{alpha.value}}</h3>

                <ul class="list-group">
                    <li class="list-group-item" ng-repeat="tld in tlds | filter: {group: alpha.value} | filter: {name: query} | orderBy: 'name'" ng-cloak="cloak"> <a href="/downloads/pdftld/{{tld.pdf}}" target="_blank">{{tld.name}}</a>

                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>


请注意filter: {group: '.{{alpha.value}}'表示要过滤所有包含alpha.value的组。例如 。 “ ie”与“ e”匹配。

10-06 09:54
查看更多