与ng-include一起使用时,自动对焦不起作用

时间:2014-07-04 15:57:32

标签: angularjs autofocus angularjs-ng-include

我想在局部视图中将焦点设置到其中一个输入框 喜欢。

包括这个

第一次加载页面时,此功能正常。但是当我改变部分时,自动对焦并不起作用。

我认为是因为页面加载的自动对焦工作如何在这里工作

1 个答案:

答案 0 :(得分:2)

我不知道如何解决页面重新加载的问题,但我认为我们可以在这里找到另一种解决方案。我写了一个小指令,有条件地将注意力集中在一个输入元素上。

以下是代码:

function SetFocusDirective($parse) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            var model = $parse(attrs.setFocus);
            scope.$watch(model, function (value) {
                if (value === true) {
                    element[0].focus();
                }
            });
            element.bind('blur', function () {
                scope.$apply(model.assign(scope, false));
            });
        }
    };
}

SetFocusDirective.$inject = ['$parse'];

app.directive('setFocus', SetFocusDirective);

以下是您可以使用它的方法:

<input type="text" ng-model="firstName" set-focus="autofocusFirstName">

autofocusFirstName$scope变量,其中应该有一个布尔值。

因此,每当你的部分加载时,它们内部的所有指令都会被链接并完成它们的工作。如果你最终使用这个指令,你应该能够实现你想要的目标。