我想在输入字段模糊时向服务器提交一些数据.用户还应该能够通过按Enter键来模糊输入字段.
不幸的是,这导致以下结果:$rootScope:inprog: $apply already in progress error.
Plunkr – 提前感谢!
这是发生了什么:
>你按回车键
> ng-keydown触发器(摘要开始)
>你调用target.blur()
> ng-blur触发并尝试启动另一个摘要周期
> Angular抱怨
模糊是同步执行的,并立即触发处理程序而不完成第一个摘要.
在我看来,这不是你的代码的问题,而是一个Angular bug.我一直在努力想出一个更好的解决方案,但我只能找到:
app.controller('BlurCtrl',function($scope,$timeout) { $scope.blurModel = "I'm the value" $scope.blurOnEnter = function( $event ) { if ( $event.keyCode != 13 ) return // this will finish the current digest before triggering the blur $timeout(function () { $event.target.blur() },false); } $scope.onBlur = function() { $scope.result = this.blurModel } })