情况:我需要将默认的ng-options值设置为当前年份。我能够使用ng-init设置它并将当前年份数据从数据数组分配给模型(参见下面的代码)。 这是html:
<select
ng-model="year_filter"
ng-init="year_filter = year_data[3]"
ng-change="filter_years(year_filter); closeProject(); showEditVacay = false"
ng-options="year.name for year in year_data track by year.value"
>
</select>
在控制器中,
$scope.year_data= [
{value: '2014', name: '2014'},
{value: '2015', name: '2015'},
{value: '2016', name: '2016'},
{value: '2017', name: '2017'},
{value: '2018', name: '2018'},
{value: '2019', name: '2019'}
]
但是,我需要动态设置默认值,以便我不必在明年回来并更改索引。 我试图用新的Date()替换year_data [3] .getFullYear()但没有运气。此外,在控制器中,我尝试动态生成年份数据,但不知道如何保持年份数据的第一个条目到2014年。任何帮助将不胜感激!
答案 0 :(得分:1)
如果ng-model
指向一个对象,则其对象引用必须等于选项数组中的一个对象。因此,您必须遍历year_data
并将year_filter
设置为正确的对象:
var year = new Date().getFullYear().toString();
for (var i = 0; i < $scope.year_data.length; i++) {
if ($scope.year_data[i].value === year) {
$scope.year_filter = $scope.year_data[i];
break;
}
}
如果你想避免循环找到正确的对象引用,你可以让year_filter
成为字符串年:
$scope.year_filter = new Date().getFullYear().toString();
并更改ng-options
:
ng-options="year.value as year.name for year in year_data"