检测窗口焦点的角度方式?

fot*_*flo 6 angularjs

是否有一种很好的角度方式来检测窗口焦点?我正在使用html5通知,我想只在窗口失焦时触发.

谢谢!

Lui*_*lli 5

编辑@CristiBerceanu 是对的 - 您应该使用内置的 ng-focus 指令。但是,请将此答案作为您要绑定的任何丢失事件的指南。

您必须创建一个指令:

angular
  .module('MyModule', [])
  .directive('onFocus', function(){
    return {
        restrict: 'A',
        scope: {
            'focus': '&onFocus'
        },
        link: function($scope, $element, $attributes) {
            var focus = function(event) {
                $scope.focus({'$event': event});
            };
            $element.on("focus", focus);
            $scope.$on('$destroy', function(){
                $element.off('focus', onClick);
            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

注意事件是如何通过 jquery 绑定到指令中的,而不是直接绑定到控制器中的。此外,请注意绑定表达式使用&前缀(可评估表达式绑定)而不是常规前缀@(如(文本绑定)或=(范围属性引用、双向、绑定)进行绑定)。


Cri*_*anu 5

有一个内置的角度指令ngFocus 这里也许帮助,如果你将其连接到身体

<window, input, select, textarea, a
  ng-focus="">
...
</window, input, select, textarea, a>
Run Code Online (Sandbox Code Playgroud)

编辑:对于窗口焦点,有$window包装器,您可以执行以下操作:

 $window.onfocus = function(){
   console.log("focused");
 }
Run Code Online (Sandbox Code Playgroud)