如何在AngularJS中重复元素?

时间:2012-12-03 14:19:09

标签: angularjs

我知道我可以使用ng-repeat来迭代集合。如何迭代范围。例如,像:

<div class='aoeu' ng-repeat='count in range(1,5)'>
  <div id='{{count}}'></div>
</div>

2 个答案:

答案 0 :(得分:6)

Javascript中没有range()函数,但是您可以创建一个函数来返回适合您需要的值数组,或者使用JS库来实现该效果。我会非常简单地使用underscore.js

<div class='aoeu' ng-repeat='count in _.range(1,5)'>
  <div id='{{count}}'></div>
</div>

当然,为了能够在角度应用中使用下划线(在指令等中),您需要将它包含在您的示波器中。在项目中包含underscore.js,在主控制器中包含$rootScope._ = _

这样,angular中的任何控制器或指令都会识别$ scope._(引用下划线库),上面的代码片段就可以了! (如果你需要的只是创建任意范围,你可以自己制作范围功能 - 并且'make'我的意思是复制任何可用的百万个例子...... Here's one

答案 1 :(得分:3)

下划线似乎是最具表现力的,但你可能想看看这个答案:AngularJS ng-options create range

它使用过滤器来创建数组。这是我的版本

var App = angular.module('app', []);
App.filter('range', function() {
  return function(arr, lower, upper) {
    for (var i = lower; i <= upper; i++){
      arr.push(i);
    }
    return arr;
  };
});​

您将使用它:

<li ng-repeat="n in [] | range:5:10"> {{n}} </li>

JSFiddle http://jsfiddle.net/jaimem/hKvNc/4/

pd:如果您希望parseInt将字符串转换为整数,请不要忘记传递radix。在解析minmax时,我在链接中丢失了答案。