2016-04-11 5 views
1

私はng-repeatulのリストがあり、私はulを8個の要素ごとに作成したいが、私は方法を見つけることができない。 ulを条件付きで表示するには$index % 8 == 0を使用する必要がありますが、どうすればよいか分かりません。 これは、これまでの私のコードです:ng-repeatのulの条件付きラッパー

<div ng-repeat-start="v in values" ng-show="false"/> 
    <ul> 
    <li ng-class="{'active': filterContent.isSelectedValue(key, v) }" ng-click="filterContent.addFilter(key, v)"> 
     <a class="issue-btn btn-default">{{v}}</a> 
    </li> 
    </ul> 
<div ng-repeat-end ng-show="false"/> 

出力結果はこのようなものになるだろう。ここに示されているように

<ul> 
    <li>... content... </li> 
    <li>.... content... </li> 
    <!-- 8 times --> 
</ul> 
<ul> 
    <li>.... more content ... </li> 
    <li>.... more content ... </li> 
    <!-- 8 times --> 
</ul> 
<!-- and so on until repeat ends --> 

答えて

1

あなたは2つのネストされたngRe泥炭のこのような何か:

angular.module('demo', []).controller('DemoController', function($scope) { 
 
    $scope.values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script> 
 

 
<div ng-app="demo" ng-controller="DemoController"> 
 
    <ul ng-repeat="v in values" ng-if=":: $index % 8 === 0"> 
 
    <li ng-repeat="v in values.slice($index, $index + 8)" ng-class="{active: filterContent.isSelectedValue(key, v)}" ng-click="filterContent.addFilter(key, v)"> 
 
     <a class="issue-btn btn-default">{{v}}</a> 
 
    </li> 
 
    </ul> 
 
</div>

+0

なぜ '::'は 'ng-if'にあるのですか? (それは '::'で動作しませんが、それらを取り除くと動作します) –

+0

これは[1つのバインディング演算子]です(https://docs.angularjs.org/guide/expression#one-時間バインディング)を使用すると、パフォーマンスが向上します。 Angular <1.4.xを使用していると仮定しますか?それでは、 '::'を削除してください。 – dfsq

+0

はい..私は1.2.27を使用しています:)ありがとう! –

1

How to use ng-repeat with filter and $index?

あなたはNG-IFで簡単にそれを行うことができますLi:

<div ng-repeat-start="v in values" ng-show="false"/> 
    <ul> 
    <li ng-class="{'active': filterContent.isSelectedValue(key, v) }" ng-click="filterContent.addFilter(key, v)" ng-if="$index % 8 == 0"> 
     <a class="issue-btn btn-default">{{v}}</a> 
    </li> 
    </ul> 
<div ng-repeat-end ng-show="false"/> 
+0

が、このソリューションで、 'ul'は一つだけ'李があるだろうに示されている:

<ul ng-repeat="v in values" ng-if=":: $index % 8 === 0"> <li ng-repeat="v in values.slice($index, $index + 8)" ng-class="{active: filterContent.isSelectedValue(key, v)}" ng-click="filterContent.addFilter(key, v)"> <a class="issue-btn btn-default">{{v}}</a> </li> </ul> 

そして、ここでは簡単なデモです'inside –

+0

あなたの質問にulを追加したいのですが、それはタイプミスで、8つの要素ごとにliを作成したいのですか? (私は私の答えを編集してLi上にng-ifを追加しました) –

+0

理解できるように質問を更新します –