首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角js 10 $digest()迭代达到。正在中止

角js 10 $digest()迭代达到。正在中止
EN

Stack Overflow用户
提问于 2016-12-21 10:04:42
回答 4查看 495关注 0票数 2

在调查了这个错误之后,我发现它来自于这段代码,但是我不知道为什么以及如何修复它。

代码语言:javascript
运行
复制
$scope.mindate = function() {
    var thisDay = new Date();
    var priorDate = new Date().setDate(thisDay.getDate() - 90);
    return new Date(priorDate);
};
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-21 11:40:52

您可以缓存它:

代码语言:javascript
运行
复制
$scope.mindate = function() {
    if(!$scope.mindateCached){
        var thisDay = new Date();
        var priorDate = new Date().setDate(thisDay.getDate() - 90);
        $scope.mindateCached = new Date(priorDate);
    }
    return $scope.mindateCached;   
};
票数 0
EN

Stack Overflow用户

发布于 2016-12-21 10:23:11

角度脏检查迭代最大为10。如果您的代码在完成脏检查之前频繁更改,它将抛出错误。PS:请贴完整的代码。

票数 0
EN

Stack Overflow用户

发布于 2016-12-21 10:23:34

这是因为你总是返回一个“新的日期()”。

当您给一个模型一个值时,角将检测到一个变化,并触发一个摘要周期来应用所有的更改。一旦完成了第一个摘要周期,它将再次遍历所有内容,以检查是否有任何更改,如果没有,则停止等待下一个更改。如果是,它将经历另一个消化周期。

在您的情况下,因为您总是返回一个新的Date()对象,在每一个周期之后,对象角总是会检测到一些变化,并且在每过10个周期之后会有一个很难的停止,之后的角度会是这样的:"Ye,让我们不要碰到一个无限循环。“你得到了你现在要犯的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41260076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档