javascript - 解决 AngularJS 上的摘要溢出问题

标签 javascript angularjs

我试图在我的 View 中输出一个随机数,但不断收到以下消息:

错误:[$rootScope:infdig] 已达到 10 次 $digest() 迭代。正在中止!

这似乎是摘要流出问题,但我不知道如何解决?这是我到目前为止的代码:

HTML

<p>{{getRandomNumber(2, 12)}} providers nearby</p>

controller.js

.controller('ServicesCtrl', function($scope, ServicesData, $stateParams) {  
  $scope.getRandomNumber = function(min, max){
    return Math.floor(Math.random() * (max - min) + min);
  }
});

最佳答案

大括号{{ }}创建一个$watch。 Angular 将 $watch 表达式并继续尝试(最多 10 次),直到获得稳定值。由于您返回的是随机数,因此它永远不会稳定。

这是一个解决方法。使用 ngInit 将随机结果分配给变量,并在表达式中使用该稳定值。

<p ng-init="foo=getRandomNumber()">{{foo}} providers nearby</p>

根据“附近的提供商”文本判断,我认为您遇到的问题不会成为最终代码的问题,并且您不需要该解决方法(因为您不太可能拥有不同数量的提供商)提供者处于 $digest 周期的中间)。

关于javascript - 解决 AngularJS 上的摘要溢出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35213719/

相关文章:

javascript - 如何在 Canvas 上制作带有背景图像的球的动画?

javascript - 使用选择器后 Jquery 使用选择器

Angularjs:两种方式数据绑定(bind)和 Controller 重新加载

javascript - require.js 使用来自不同模块的 AngularJS 指令

javascript - 在对象内部访问对象的属性

javascript - 从 Web 开发人员的 Angular 来看 Firefox 与 Chrome

javascript - 如何强制 Opera 的悬停触发

javascript - 将参数从 URL 传递给 $scope.id - angularJS

angularjs - 使用 Passportjs 从 Angularjs ( http get/resource ) 进行用户身份验证

forms - AngularJS 密码复选框字段最小/最大长度问题