调用angularjs函数时出错

时间:2019-01-11 17:23:56

标签: angularjs

在调用函数时遇到此错误

 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;
    }

1 个答案:

答案 0 :(得分:0)

“ inprog”通常表示正在进行摘要。原因是手动调用$ scope。$ apply()。唯一需要手动调用$ scope。$ apply()的时间是,如果它在某种异步调用中,例如$ http的回调或promise。

为$ scope变量“ active_question_counter”分配值应自动触发摘要。但是由于您是手动触发摘要的,并且在该摘要的范围内进行更改,因此结果是“已消化摘要”错误。

除非有一些奇怪的幕后链接没有主动检测到某些变化,否则您无需在此处显式调用$ apply()。在这种情况下,一个棘手的解决方法是将$ scope。$ apply(...)包装在setTimeout()中。

我不确定如何在控制台中通过angular.elment()。scope()执行此操作。控制台可能在单独的上下文中运行吗?