获取此错误错误:$ rootScope:infdig Infinite $ digest循环

时间:2017-03-17 14:30:03

标签: angularjs

尝试运行此角度函数,但我收到此错误错误:$ 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>

1 个答案:

答案 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