提升锚定点击 - 在角度

时间:2016-11-06 19:18:21

标签: angularjs angularjs-ng-click

我正在解决项目中的辅助功能问题。我正在努力的一个场景是,我们有ng-click事件的锚标记。当有人点击标签并使用键盘在页面上到达锚标签时,他们会按下输入键,他们认为应该做某事。但是,遗憾的是,输入键和单击事件可以很好地使用按钮控件但不能使用锚点。任何人都有任何建议如何解决这个问题?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并解决了它创建一个简单的指令,它会拦截链接上的keydown / keypress事件,然后调用与该指令相关的函数。

这是指令:

 // Allows for the interception of the enter key, and then calling a passed in function
(function () {
    'use strict';
    angular
        .module('app.directives')
        .directive('convEnter', convEnter);

    function convEnter() {
        var directive = {
            restrict: 'A',
            link: link
        };
        return directive;

        ////////////////////////////////////////////////////////////////////////

        function link(scope, element, attrs) {
            element.bind('keydown keypress', function (event) {
                if (event.which === 13) {
                    scope.$apply(function () {
                        scope.$eval(attrs.convEnter, { 'event': event });
                    });

                    event.preventDefault();
                }
            });
        }
    }
})();

要使用它,您只需将其应用于您的链接,即:

<a conv-enter="vm.click()" ng-click="vm.click()">Click Link</a>

当然,当你指定两次“vm.click()”时,这有点重复;你可以根据需要通过让指令简单地调用元素本身的“click”函数来优化它,只要你总是想要click和enter键来调用相同的函数。 (在我的场景中,我有时需要区分这两者,因此我允许传递一个单独的函数)