【问题标题】:Getting this error Error: $rootScope:infdig Infinite $digest Loop收到此错误错误:$rootScope:infdig Infinite $digest Loop
【发布时间】:2017-03-17 14:30:03
【问题描述】:

试图运行这个角度函数,但我收到这个错误错误:$rootScope:infdig 无限 $digest 循环。我该怎么做才能修复

这是我的角度服务,它返回一个整数,比如 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>

【问题讨论】:

  • 很难说 - 你用什么myfunction?这应该每次都返回相同的数组实例。
  • 更新问题
  • 想念消费者到myfunction
  • @DanielA.White 更新问题

标签: angularjs


【解决方案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 获取新值并在ng-options 中使用years

【讨论】:

  • 嗨丹尼尔我试过这个它不起作用。问题是它没有调用 RefreshYears 函数。你能帮我如何在 ng-options 中使用它。
  • $scope.years = []之后调用refreshYears;
  • 我也试过了,丹。但没有运气。你能帮忙吗
  • 您的服务是否返回$q 承诺?
  • 我使用的服务与我的问题中定义的相同
猜你喜欢
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多