angularjs——用于附加全局焦点事件的方式

AngularJS-way for attaching global focus event

本文关键字:事件 方式 焦点 用于 angularjs 全局      更新时间:2023-09-26

我正在寻找一种角度的方式,将全局焦点事件附加到出现在我的网站上的所有输入字段,并将在未来出现。对于jQuery,我将使用live方法,并简单地将事件处理程序放在index.html中。

我需要收听focusblur事件,因为在移动Safari中出现iOS 7上的虚拟键盘时存在错误。在我收到事件后,我必须重新定位底部的导航栏(见这里的bug iOS 5固定定位和虚拟键盘)。

那么,angular实现这一点的最佳方法是什么,而不需要一直向控制器中注入东西?有"全球之路"吗?

我会使用指令来捕获焦点/模糊,像这样:

.directive('onFocusBlur',function() {
    return {
        restrict : 'A', 
        link : function($scope,$element,$attr) {
            $element.bind('focus',function() {
                $scope[$attr.onFocusBlur] = true;
            });
            $element.bind('blur',function() {
                $scope[$attr.onFocusBlur] = false;
            });
        }
    }
})
<!-- my focus/blur input -->
<input on-focus-blur="respoitionMyNav" />
<!-- my nav -->
<div ng-class="{ reposition-class : respoitionMyNav }">
</div>