Angular确实在HTML指令中提供了一些使用数字的for循环的支持:

<div data-ng-repeat="i in [1,2,3,4,5]">
  do something
</div>

但是,如果作用域变量包含一个具有动态数字的范围,那么每次都需要创建一个空数组。

在控制器中

var range = [];
for(var i=0;i<total;i++) {
  range.push(i);
}
$scope.range = range;

在HTML中

<div data-ng-repeat="i in range">
  do something
</div>

这是可行的,但这是不必要的,因为我们在循环中根本不会使用范围数组。有人知道设置最小/最大值的范围或规则吗?

喜欢的东西:

<div data-ng-repeat="i in 1 .. 100">
  do something
</div>

当前回答

不需要在你的控制器中做任何改变,你可以这样使用:

ng-repeat="_ in ((_ = []) && (_.length=51) && _) track by $index"

享受吧!

其他回答

我稍微调整了一下这个答案,然后想出了这个小提琴。

过滤器定义为:

var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
  return function(input, total) {
    total = parseInt(total);

    for (var i=0; i<total; i++) {
      input.push(i);
    }

    return input;
  };
});

像这样重复使用:

<div ng-repeat="n in [] | range:100">
  do something
</div>

对于那些刚接触angularjs的人。 可以使用$index获取索引。

例如:

<div ng-repeat="n in [] | range:10">
    do something number {{$index}}
</div>

这将,当你使用Gloopy的方便滤镜,打印: 做一些0的事情 做第一件事 做第二件事 做第三件事 做第4件事 做第5件事 做第6件事 做第7件事 做第8件事 做第九件事

在控制器中设置作用域

var range = [];
for(var i=20;i<=70;i++) {
  range.push(i);
}
$scope.driverAges = range;

在“Html模板文件”中设置“重复”

<select type="text" class="form-control" name="driver_age" id="driver_age">
     <option ng-repeat="age in driverAges" value="{{age}}">{{age}}</option>
</select>

你可以在angular中使用'after'或'before'过滤器。过滤模块(https://github.com/a8m/angular-filter)

$scope.list = [1,2,3,4,5,6,7,8,9,10]

HTML:

<li ng-repeat="i in list | after:4">
  {{ i }}
</li>

结果: 5 6 7 8 9 10

方法定义

下面的代码定义了一个方法range(),可用于应用程序MyApp的整个作用域。它的行为非常类似于Python的range()方法。

angular.module('MyApp').run(['$rootScope', function($rootScope) {
    $rootScope.range = function(min, max, step) {
        // parameters validation for method overloading
        if (max == undefined) {
            max = min;
            min = 0;
        }
        step = Math.abs(step) || 1;
        if (min > max) {
            step = -step;
        }
        // building the array
        var output = [];
        for (var value=min; value<max; value+=step) {
            output.push(value);
        }
        // returning the generated array
        return output;
    };
}]);

使用

只有一个参数:

<span ng-repeat="i in range(3)">{{ i }}, </span>

0, 1, 2,

有两个参数:

<span ng-repeat="i in range(1, 5)">{{ i }}, </span>

One, two, three, four,

有三个参数:

<span ng-repeat="i in range(-2, .7, .5)">{{ i }}, </span>

-2, -1.5, -1, -0.5, 0, 0.5,