我有一个HTML代码,它使用ng-repeat来显示数据。数据分为两列,每列的数据大致相同(通过链接显示)。
然而,要做到这一点,我遍历同一组数据两次,有两个不同的ng-repeat条件(第一个遍历显示第一列中的第一组数据,第二个遍历显示第二组)第二栏中的数据)。
我认为这实际上是多余的(也是耗时的),因为对于第一次遍历,我获得数据的前半部分然后跳过其余部分(通过ng-if),并且对于第二次遍历,我得到下半场。
有没有办法遍历数据一次,但仍能显示数据划分?
注意:我在第一次<之前尝试过ng-repeat。 div class =" column" >,并将条件保持在< a>,但是即使是< div class =" column" >重复,这不应该是这种情况。我只想要< a>标签在相应的列中重复。
代码
<div class="ui two column doubling stackable grid">
<div class="column">
<h5>
<div ng-repeat="agency in agencies" ng-if="$index <= (agencies.length/2)">
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>
<div class="column">
<h5>
<div ng-repeat="agency in agencies" ng-if="$index > (agencies.length/2)">
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>
</div>
答案 0 :(得分:1)
我的改进是使用&#39; limitTo&#39;管道,而不是ng-if。
看看这个版本,效率更高。
{{agFull = agencies.length; ""}}
{{agHalf = agFull/2; ""}}
<div class="ui two column doubling stackable grid">
<div class="column">
<h5>
<div ng-repeat="agency in agencies | limitTo : agHalf">
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>
<div class="column">
<h5>
<div ng-repeat="agency in agencies | limitTo : agFull : agHalf">
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>
</div>
我还建议存储agencies.length&amp; - 如上所述,变量中的agencies.length / 2。如果您不喜欢模板变量,也可以使用控制器。
答案 1 :(得分:0)
由于您希望优化,我建议您在控制器中将阵列分成两个。这将消除冗余。不要让你看到控制器的工作。
<div class="ui two column doubling stackable grid">
<div class="column">
<h5>
<div ng-repeat="agency in agencies[0]" >
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>
<div class="column">
<h5>
<div ng-repeat="agency in agencies[1]">
<a href="agency.html#{{agency.url | num}}">{{agency.name}}</a><br>
</div>
</h5>
</div>