【发布时间】:2019-05-03 09:31:49
【问题描述】:
将我们的 AngularJS 应用程序从 v1.2.9 迁移到 v1.6.9 后,每当我点击任何下拉选项时,我都会在开发者控制台中收到错误提示
'错误:[$rootScope:inprog] $apply 已经在进行中'
我尝试使用 $timeout 解决方案,它解决了某些情况下的问题(使用 $apply 的情况)。但是,当我单击下拉选项时,会出现此特定问题。我没有在我的代码中的任何地方调用 $apply 。我也尝试在 select 标签中使用 ng-options,但问题仍然存在。
Select tag that gives issue:
<select name="task" id="task" ng-model="search.task">
<option data-ng-repeat="each in taskList" value="{{each.id}}"
ng-selected="each.id==search.task">
{{each.taskName}}
</option>
</select>
Code changes after using ng-options:
<select ng-model="search.task" ng-options="each for each in taskList">
<option value="">Task Type</option>
</select>
Please follow link for complete error stack
错误:[$rootScope:inprog] $apply 已经在进行中 http://errors.angularjs.org/1.6.9/$rootScope/inprog?p0=%24apply
如何解决此错误?非常感谢任何帮助/指针。
【问题讨论】:
-
阅读AngularJS
<select>Directive API Reference - Using ngRepeat to generateselectoptions。不要将ng-selected与ng-model一起使用。 -
@georgeawg :我已经尝试了上述解决方案,但没有运气!我在应用程序中的所有选择框都面临这个 $apply 问题。
-
请注意,我仅在迁移到 1.6 后才遇到此问题,在 v1.2.x 中一切正常。
-
堆栈跟踪显示来自
login_script.js第18665行的第二个应用程序。
标签: angularjs