【问题标题】:Digest error when chosing a value from dropdown从下拉列表中选择值时出现摘要错误
【发布时间】:2017-01-11 06:54:27
【问题描述】:

当我第三次尝试从下拉列表中选择一个值时,出现如下错误:

angular.js:9937 [$rootScope:inprog] http://errors.angularjs.org/1.2.18/$rootScope/inprog?p0=%24digest

所选值不会在下拉列表中更新。

知道如何解决这个错误吗?

  <select id="country" ng-model="quoteRequest.quotationRequestItems[0].localSite.countryCode3"
                      ng-options="country.countryCode3 as country.countryName for country in countries"
                      ng-class="{dropdowWithLongData:isBrowserIE()}"
                      ng-change="changeCountryName(quoteRequest.quotationRequestItems[0].localSite); updateBillingInSameCountryBlock();detectChange('countryName');updateLocalContact(quoteRequest.quotationRequestItems[0].localSite.countryCode3)"
                      name="countryName"
                      required={{!nextClicked}>
                <option value=""></option>
              </select>
  $scope.changeCountryName = function (site) {
    console.log(site.countryCode3 +"COUNTRY CODE");
    site.countryName = $scope.countriesMap[site.countryCode3];
    console.log(site.countryName +"COUNTRY NAME");

  };

【问题讨论】:

  • ng-change 指令调用四个函数:changeCountryName()updateBillingInSameCountryBlock()detectChange()updateLocalContact()。这些功能之一可能是问题的原因。尝试删除它们中的每一个以隔离问题。

标签: javascript angularjs


【解决方案1】:

诊断此错误

当您收到此错误时,诊断问题的原因可能会相当令人生畏。最好的做法是从错误中调查堆栈跟踪。您需要查找调用了$apply$digest 的位置,并找到发生这种情况的上下文。

应该有两个调用:

  • 第一个调用是好的$apply/$digest,通常会由调用堆栈顶部附近的某个事件触发。

  • 第二个电话是错误的$apply/$digest,这是要调查的。

一旦您确定了这个调用,您就可以在堆栈中查找问题所在。

  • 如果在您的应用程序代码中进行了第二次调用,那么您应该查看为什么从 $apply/$digest 中调用了此代码。这可能是一个简单的疏忽,也可能符合前面描述的同步/异步场景。

  • 如果第二次调用是在 Angular 指令内进行的,那么它很可能与前面描述的第二个编程事件触发场景相匹配。在这种情况下,您可能需要进一步向上查找触发事件的原因。

-- AngularJS Error Reference - $rootScope - inprog.

【讨论】:

    【解决方案2】:

    在调用执行摘要错误之前检查此条件。

    if($scope.$$phase)
    {
      site.countryName = $scope.countriesMap[site.countryCode3];
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多