在AngularJs中迭代ng-repeat只重复X次

Vur*_*ral 84 javascript angularjs

如何使用NG-重复类似 Javascript中?

例:

<div ng-repeat="4">Text</div>
Run Code Online (Sandbox Code Playgroud)

我想用ng-repeat迭代4次,但我该怎么做呢?

Dav*_*Lin 338

Angular附带一个limitTo:limit过滤器,它支持限制前x个项目和最后x个项目:

<div ng-repeat="item in items|limitTo:4">{{item}}</div>
Run Code Online (Sandbox Code Playgroud)

  • 这是一段非常有用的代码,但这实际上并不满足OP的问题.他只是在寻找一种重复n次的方法,而且很可能没有一个实际的对象来迭代. (29认同)
  • 这应该是答案,因为它也适用于迭代数组中的对象.加上它的角度功能. (14认同)
  • 这实际上并没有解决问题.你假设他有一个名为`items`的对象 (10认同)
  • 这应该是答案,它使用AngularJS核心提供的工具 (2认同)

Cha*_*arG 65

这是我能想到的最简单的解决方法.

<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Run Code Online (Sandbox Code Playgroud)

这是一个Plunker的例子.

  • 更容易!这应该有更多的赞成! (3认同)
  • 聪明且非常有用,无需在控制器中使用任何功能.仍然困惑为什么这不是一个角度特征 (2认同)

Gih*_*han 49

您可以在javascript数组对象中使用切片方法

<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Run Code Online (Sandbox Code Playgroud)

短暂的甜蜜

  • 没有错,它就像`item in items | limitTo:4`一样容易 (4认同)
  • 为什么这是错的?有用.如果您希望数组索引中的数组元素为2到4,那么让我们采用另一种方案.它是否适用于limitTo过滤器? (2认同)

mpm*_*mpm 39

在HTML中:

<div ng-repeat="t in getTimes(4)">text</div>
Run Code Online (Sandbox Code Playgroud)

并在控制器中:

$scope.getTimes=function(n){
     return new Array(n);
};
Run Code Online (Sandbox Code Playgroud)

http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj

编辑:

with angularjs> 1.2.x

<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
Run Code Online (Sandbox Code Playgroud)

  • 其他选择:`t在[1,2,3,4]`或't in'aaaa'等等:) (19认同)
  • 似乎很奇怪Angular不支持数学循环而不需要函数来支持它. (4认同)
  • 是的,我可以想象不得不迭代30倍,把它写成`[1,2,3,4]`..这个真是令人沮丧的解决方案 (4认同)
  • 请参阅DavidLin的以下答案,以获得更好的解决方案. (2认同)

Pra*_*nka 13

@mpm给出的答案不起作用,它给出了错误

不允许在转发器中重复.使用'track by'表达式指定唯一键.转发器:{0},重复键:{1}

为了避免这种情况

ng-repeat ="t in getTimes(4)"

使用

跟踪$ index

像这样

<div ng-repeat ="t in getTimes(4)track by $ index"> TEXT </ div>


fun*_*iko 10

要重复7次,尝试使用长度= 7的数组,然后$ index 跟踪它:

<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
Run Code Online (Sandbox Code Playgroud)

b=[]创建一个空数组«b»,
.length=7将其大小设置为«7»,
&&b让新数组«b»可用于ng-repeat,
track by $index其中«$ index»是迭代的位置.
ng-bind="$index + 1"显示从1开始.

要重复X次:
只需更换7通过X.

  • 两个更高的选票答案似乎假设«items»是一个数组.这个使阵列到位. (3认同)