选择ng-options年份列表,默认情况下查看当前年份

时间:2017-08-06 16:28:43

标签: javascript css angularjs drop-down-menu angularjs-ng-options

我在angularjs中使用selectng-options来显示我自己构建的年份列表。

此处为plunker link

我的问题是:

如果点击下拉列表,如何显示当前年份?我的意思是,假设在2017年的哪个位置,当用户点击时,默认选择将是2017,它将位于列表的中间。该清单将按时间顺序排列,从当年之前的20年开始到当年之后的20年结束。换句话说,通过点击列表,第一个可见的默认选择将是当前年份,用户可以在这些年份上下滚动。



var app = angular.module('app', []);

app.controller('MyCtrl', function($scope) {
    $scope.dates = {};
    $scope.years = [{value: 'Year', disabled: true}];
    var current_year = new Date().getFullYear();
    for(var i = current_year - 20; i <= current_year + 20; i++){
        $scope.years.push({value: i + ''});
    }

});
&#13;
   <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
   <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js"></script>

<body ng-app="app">
 <div ng-controller="MyCtrl">

        <label class="control-label">Year</label>
  <select name="startYear" ng-model="dates.startYear" id="startYear"
          ng-options="year.value as year.value disable when year.disabled for year in years"
          required>
      <option value="" disabled >Choose one</option>
  </select>
</div>
</body>
&#13;
&#13;
&#13;

更新1:

为了消除误解,我希望仅在单击列表时将列表置于当前年份的中心,否则,默认的SHOWN值为&#34;选择一个&#34;,但默认视图应居中在列表打开的当年。

更新2:

这是我的下拉菜单:

http://preview.themeforest.net/item/cliptwo-bootstrap-admin-template-with-angularjs/full_screen_preview/10290688

转到表格/表格向导/第3步比林

enter image description here

上面这个链接中的默认值是单词&#34; Year&#34;,但点击后,年份列表打开,列表不以当前年份为中心。假设我们在当前年份之前40年和之后40年,那么用户必须无休止地向下滚动到当前年份。 因此,我们的想法是在点击框时将当前年份作为中心。 这是与之相关的css文件link css

1 个答案:

答案 0 :(得分:1)

在获得全年之前,您需要先获取当前日期。代码如下。另外,请将years.value修改为整数,并立即分配给ng-model(dates.startYear)。瞧!希望这可以帮助。

   var app = angular.module('app', []);

    app.controller('MyCtrl', function($scope) {
    $scope.dates = {};
    $scope.years = [{value: 'Year', disabled: true}];
    for(var i = 1990; i <= 2040; i++){
        $scope.years.push({value: i});

    }

    var d = new Date();
    var n = d.getFullYear();

    $scope.dates.startYear = n;
    console.log(n);

    });

这是plnkr example

<强>更新

这是plnk update

基本上,我把它放在一个函数中并在select中触发ng-click。