在调用函数时遇到此错误
Error: "[$rootScope:inprog] http://errors.angularjs.org/1.6.9/$rootScope/inprog?p0=%24digest"
但是,如果从控制台调用它,则可以正常工作。
angular.element('body').scope().set_active_counter(1);
函数看起来像这样
$scope.set_active_counter = function (i) { $scope.$apply(function () { $scope.active_question_counter = i; }); active_question_counter = i; }
答案 0 :(得分:0)
“ inprog”通常表示正在进行摘要。原因是手动调用$ scope。$ apply()。唯一需要手动调用$ scope。$ apply()的时间是,如果它在某种异步调用中,例如$ http的回调或promise。
为$ scope变量“ active_question_counter”分配值应自动触发摘要。但是由于您是手动触发摘要的,并且在该摘要的范围内进行更改,因此结果是“已消化摘要”错误。
除非有一些奇怪的幕后链接没有主动检测到某些变化,否则您无需在此处显式调用$ apply()。在这种情况下,一个棘手的解决方法是将$ scope。$ apply(...)包装在setTimeout()中。
我不确定如何在控制台中通过angular.elment()。scope()执行此操作。控制台可能在单独的上下文中运行吗?