罕见的“达到10 $ digest迭代”的情况

时间:2015-06-22 21:06:37

标签: angularjs

摘要

嗨,我想每个人都遇到了题为“10 $digest iterations reached”的问题。通常,它是由递归更改的角度表达式引起的,这些角度表达式永远不会停止更改,或者当观察表达式在每个摘要周期生成新实例时。

我的问题是我的代码中没有上述问题。我遇到这个问题的原因是我的UI中有非常复杂的嵌套级别,需要10个以上的摘要周期才能进行评估。

为了通过删除哪个问题消失来证明这是html:

<div class="row">
    <div class="col-sm-6">
        <p>Name</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.name">

        <p>ICAO</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.ICAO">

        <p>IATA</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.IATA">

        <p>Crew</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.crew">

        <p>Weight</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.weight">
    </div>
    <div class="col-sm-6">
        <p>Manufacturer</p>
        <input type="text" class="form-control m-b-10" placeholder="Value not set" ng-disabled="workspace.mode === 'read'" ng-model="workspace.aircraftType.manufacturer">
    </div>
</div>

问题

此时更改体系结构不是我可以编写许多代码的选项,那么如何将10个摘要周期限制为20个摘要周期?

1 个答案:

答案 0 :(得分:2)

要直接回答您的问题,您可以按如下方式更改摘要周期数:

app.config(function($rootScopeProvider){
  $rootScopeProvider.digestTtl(20);
});

但是,我谨慎地建议将其作为一种通用方法,因为很可能问题出现在你的代码的其他地方(问题中没有指明),它只是在本节中表现出来。摘要周期的数量不应该是嵌套的函数,因此你达到10的事实本身就是一个问题。