我在angularjs中使用select
和ng-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;
为了消除误解,我希望仅在单击列表时将列表置于当前年份的中心,否则,默认的SHOWN值为&#34;选择一个&#34;,但默认视图应居中在列表打开的当年。
这是我的下拉菜单:
转到表格/表格向导/第3步比林
上面这个链接中的默认值是单词&#34; Year&#34;,但点击后,年份列表打开,列表不以当前年份为中心。假设我们在当前年份之前40年和之后40年,那么用户必须无休止地向下滚动到当前年份。 因此,我们的想法是在点击框时将当前年份作为中心。 这是与之相关的css文件link css。
答案 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。