автофокус не работает при использовании с ng-include

Я хочу установить фокус на одно из полей ввода в частичном представлении, например .

и в том числе по

Это работает нормально, когда страница загружается в первый раз. но когда я меняю партиалы, автофокус не работает.

Я считаю, что это из-за работы автофокуса при загрузке страницы, как он может работать здесь


person Rahul Shukla    schedule 04.07.2014    source источник
comment
У ваших партиалов есть собственные контроллеры? Или это просто разметка?   -  person vaidik    schedule 04.07.2014
comment
В моем случае это только разметка   -  person Rahul Shukla    schedule 05.07.2014
comment
Вы проверили решение, которое я предоставил? Есть отзывы о нем?   -  person vaidik    schedule 09.07.2014


Ответы (1)


Я не знаю, как решить проблему перезагрузки страницы, но я думаю, что здесь мы можем найти другое решение. Однажды я написал небольшую директиву, чтобы условно установить фокус на элементе ввода.

Вот код:

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, которая должна иметь логическое значение.

Таким образом, каждый раз, когда ваши частичные файлы загружаются, все директивы внутри них будут связаны и выполнять свою работу. Если вы в конечном итоге используете эту директиву, вы сможете достичь того, чего хотите.

person vaidik    schedule 05.07.2014
comment
Viadik Я не пробовал это, так как делаю то же самое с контроллера, устанавливая фокус вручную, но ваш способ лучше, чем мой .. - person Rahul Shukla; 10.07.2014