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>

当前回答

这是jzm改进后的答案(我不能评论,否则我会评论她/他的答案,因为她/他包含错误)。 函数有一个开始/结束范围值,所以它更灵活,而且……它的工作原理。这个特殊的例子是在一个月的某一天:

$scope.rangeCreator = function (minVal, maxVal) {
    var arr = [];
   for (var i = minVal; i <= maxVal; i++) {
      arr.push(i);
   }
   return arr;
};


<div class="col-sm-1">
    <select ng-model="monthDays">
        <option ng-repeat="day in rangeCreator(1,31)">{{day}}</option>
    </select>
</div>

其他回答

我想出了一个更简单的版本,用于创建两个定义的数字之间的范围,例如。5至15

参见JSFiddle上的演示

HTML:

<ul>
    <li ng-repeat="n in range(5,15)">Number {{n}}</li>
</ul>

控制器:

$scope.range = function(min, max, step) {
    step = step || 1;
    var input = [];
    for (var i = min; i <= max; i += step) {
        input.push(i);
    }
    return input;
};

在控制器中设置作用域

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>

这是jzm改进后的答案(我不能评论,否则我会评论她/他的答案,因为她/他包含错误)。 函数有一个开始/结束范围值,所以它更灵活,而且……它的工作原理。这个特殊的例子是在一个月的某一天:

$scope.rangeCreator = function (minVal, maxVal) {
    var arr = [];
   for (var i = minVal; i <= maxVal; i++) {
      arr.push(i);
   }
   return arr;
};


<div class="col-sm-1">
    <select ng-model="monthDays">
        <option ng-repeat="day in rangeCreator(1,31)">{{day}}</option>
    </select>
</div>

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

例如:

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

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

使用UnderscoreJS:

angular.module('myModule')
    .run(['$rootScope', function($rootScope) { $rootScope.range = _.range; }]);

将此应用到$rootScope使其在任何地方都可用:

<div ng-repeat="x in range(1,10)">
    {{x}}
</div>