如何动态设置默认的 ng-options 值
How to dynamically set default ng-options value
情况:我需要将默认的 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'}
]
但是,我需要动态设置默认值,这样明年我就不用再回来更改索引了。
我试图用 new Date().getFullYear() 替换 year_data[3] 但没有成功。此外,在控制器中,我尝试动态生成年份数据,但不确定如何在将年份数据的第一个条目保留到 2014 年的同时做到这一点。任何帮助将不胜感激!
如果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"
情况:我需要将默认的 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'}
]
但是,我需要动态设置默认值,这样明年我就不用再回来更改索引了。 我试图用 new Date().getFullYear() 替换 year_data[3] 但没有成功。此外,在控制器中,我尝试动态生成年份数据,但不确定如何在将年份数据的第一个条目保留到 2014 年的同时做到这一点。任何帮助将不胜感激!
如果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"