angularjs - 调用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; }
解决方案
“inprog”通常表示正在进行摘要。手动调用 $scope.$apply() 是原因。您唯一需要手动调用 $scope.$apply() 的情况是它是否在某种异步调用中,例如来自 $http 的回调或一个承诺。
为 $scope 变量“active_question_counter”赋值应该会自动触发摘要。但是因为您手动触发了摘要,并且在该摘要的范围内进行了更改,所以结果是“摘要已在进行中”错误。
您不需要在此处显式调用 $apply() ,除非有一些奇怪的幕后链接正在进行,而不会主动检测到某些事情发生了变化。如果是这种情况,一个 hacky 解决方法是将 $scope.$apply(...) 包装在 setTimeout() 中。
我不太确定为什么通过控制台中的 angular.elment().scope() 执行此操作有效。也许控制台在单独的上下文中运行?
推荐阅读
- java - 在 C# 中解压缩文件时,我应该如何获取最新文件夹并排除具有相同名称的旧文件夹
- latex - 如何让 pandoc 将 .tex 文件中的 \lbrack 和 \rbrack 渲染为 .docx 文件中的实际括号?
- readline - Msys2:两个python安装中的readline
- android - 如何使用 AlarmManager 在特定的未来一天在后台显示通知
- python - 我如何在 django 中运行脚本?
- javascript - 两个可编辑的列在 DT 中相互计算
- python - 使用 Pandas 数据框匹配关键字(字符串)
- java - 如何将 Rest-Assured Request 和 Response 控制台日志写入 Cucumber 报告
- python - 大熊猫从日期时间索引长到宽
- android - 如何为 facebook 应用程序创建有效的隐私政策 URL ..?