我想知道如何使用ng-repeat从当前年份添加80岁以选择框。我已经完成了数月和数天的循环,这些工作正常。根据上述恢复情况,我想知道如何做多年。
JS代码:
app.filter('range', function() {
return function(input, min, max) {
min = parseInt(min);
max = parseInt(max);
for (var i=min; i<=max; i++)
input.push(i);
return input;
};
});
HTML代码:
<select class="custom-select" required ng-model="bd">
<option selected disabled ng-selected="true">Days</option>
<option ng-repeat="n in [] | range:1:31" value="{{n}}">{{n}}</option>
</select>
<select class="custom-select" required ng-model="bm">
<option selected disabled ng-selected="true">Months</option>
<option ng-repeat="n in [] | range:1:12" value="{{n}}">{{n}}</option>
</select>
<select class="custom-select" required ng-model="by">
<option selected disabled ng-selected="true">Year</option>
<option ng-repeat="n in [] | range:new Date().getFullYear()-80:new Date().getFullYear()" value="{{n}}">{{n}}</option>
</select>
答案 0 :(得分:0)
我认为最容易做另一个过滤器:
app.filter('yearRange', ['$filter', function($filter) {
return function(input, range) {
$filter('range')(input, new Date().getFullYear()-range, new Date().getFullYear());
}
}]);
用以下方式调用:
<option ng-repeat="n in [] | yearRange: 80" value="{{n}}">{{n}}</option>
或者,您可以将当前年份创建为$scope
变量,并在过滤器中调用它。
控制器:
$scope.currentYear = new Date().getFullYear();
HTML:
<option ng-repeat="n in [] | range: $scope.currentYear-80:$scope.currentYear" value="{{n}}">{{n}}</option>
第三种选择。从您的控制器调用$filter
,并在那里初始化年份数组(确保传入):
$scope.years = $filter('range')([], new Date().getFullYear()-80, new Date().getFullYear());
然后使用:
<option ng-repeat="n in years" value="{{n}}">{{n}}</option>