我现在对Angular有相当的经验,但这似乎是在DOM级别传播的较低级别发生的事情.由于某些原因在我的应用程序的一部分,我在同一个输入上有ng-focus和ng-blur,但是ng-focus事件触发两次,ng-blur从不触发.
<input type="text" ng-focus="doFocus()" ng-blur="doBlur()" />
然后在我的控制器
$scope.doFocus = function(){ console.log('focus'); } $scope.doBlur = function(){ console.log('blur'); }
当我检查我的控制台时,我看到2“焦点”,没有“模糊”的消息…我已经在我的网站的其他部分进行了测试,它在其他的工作.我的猜测是与DOM有关系,但是我甚至尝试将页面上的所有内容都除外,除了输入内容,它仍然无法正常工作.有人有什么想法可能导致这个吗?
UPDATE
经过一些调试之后,我注意到焦点事件在浏览器的范围内被触发了一次,但事件在AngularJS的世界中触发了两次.我使用Chrome开发工具在所有Focus事件上设置一个断点,它只会打一次,但是如果我在控制台中记录Angular $事件,我可以看到EXACT相同的$事件,相同的时间戳在Angular中被触发两次.