角度路由/输入自动对焦

时间:2015-04-29 02:56:21

标签: javascript angularjs input routes autofocus

我正在使用角度路线。每个页面(路由)都有一个输入字段。我已经在第一页上成功使用了属性autofocus。当我导航到其他页面时,输入不会自动对焦。返回第一页不会再次自动对焦输入。我现在明白为什么它不起作用,但想知道是否有办法实现这一点。

我是Angular的新手,我不确定我理解我对ngFocus的看法:

https://docs.angularjs.org/api/ng/directive/ngFocus

2 个答案:

答案 0 :(得分:9)

ngFocus不是您想要的。该指令更像是一个事件触发器。只要用户将焦点放在文本框中,它就会执行您的代码。

你想要的是这个自定义指令:

angular
    .module('myApp')
    .directive('autofocus', function($timeout) {
        return {
            link: function(scope, element, attrs) {
                $timeout(function() {
                    element.focus();
                });
            }
        }
    });

http://ericclemmons.com/angular/angular-autofocus-directive/启发

答案 1 :(得分:1)

就我而言,特拉维斯柯林斯的答案不起作用,因为不知何故,该元素是一系列输入。

所以我必须使用稍加修改的版本。注意,带箭头功能。

.directive('autofocus', ($timeout) => ({
    link: (scope, element: any, attrs) => {
        if (!element.focus && element.length) {
            element = element[0];
        }
        $timeout(() => {
            element.focus();
        });
    }
}));