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

时间:2014-03-11 16:33:59

标签: javascript jquery ios angularjs ios7

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

我需要收听focusblur事件,因为当移动Safari中的iOS 7上的虚拟键盘出现时会出现错误。收到活动后,我必须在底部重新定位导航栏(请参阅此处查看错误iOS 5 fixed positioning and virtual keyboard)。

那么,实现这一目标的最佳方法是什么,而不是一直向控制器注入一些东西?有没有“全球化的方式”?

1 个答案:

答案 0 :(得分:2)

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

.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>