使用Angular JS的不同年份月份和日期选择器框中的日期选择器

时间:2017-01-15 16:40:43

标签: html angularjs html5 date

我想知道如何使用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>

1 个答案:

答案 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>