This would be a good opportunity to create a directive for reuse. Here's an example for years, and the same thing could be done in a few months. Use ng-options instead of ng-repeat .
HTML:
<div year-drop offset="0" range="20"></div>
Directive
angular.module('myapp',[]).directive('yearDrop',function(){ function getYears(offset, range){ var currentYear = new Date().getFullYear(); var years = []; for (var i = 0; i < range + 1; i++){ years.push(currentYear + offset + i); } return years; } return { link: function(scope,element,attrs){ scope.years = getYears(+attrs.offset, +attrs.range); scope.selected = scope.years[0]; }, template: '<select ng-model="selected" ng-options="y for y in years"></select>' } });
Here is the fiddle
source share