尝试运行此角度函数,但我收到此错误错误:$ rootScope:infdig 无限$摘要循环。我该怎么做才能修复
这是我的角度服务,它返回像2020年一样的年份
function getMaxYear() {
var url = apiService.ApiUrl + "/Disbursements/DisbursementSchedule/Max";
return apiService.DeferredGet(url);
};
如何在控制器中更改以下角度功能以显示当前年份到2020年之间的日期范围(我们从api获得的结果)。所以var范围应该有2017年,2018年,2019年,2020年
$scope.myfunction = function () {
var range = [];
var startYear = new Date().getFullYear();
var endYear;
disbursementsModel.GetMaxYear().then(function (response) {
endYear = response.data;
return response;
});
while (startYear <= endYear) {
range.push(startYear++);
}
return range;
}
这是我的HTML
<select ng-options="year for year in myfunction()" name="year" ng-model="year" required>
<option value selected disabled>select year</option>
</select>
答案 0 :(得分:1)
您应该避免为此目的使用功能。只需将值分配给$scope
即可。
鉴于您的API使用$http
或返回$q
承诺:
$scope.years = [];
function refreshYears() {
$scope.years.length = 0;
disbursementsModel.GetMaxYear().then(function (response) {
var startYear = new Date().getFullYear();
var endYear = response.data;
while (startYear <= endYear) {
$scope.years.push(startYear++);
}
});
}
根据需要致电refreshYears
获取新值,并在years
中使用ng-options
。