#angularjs #autofocus #angularjs-ng-include
#angularjs #автофокусировка #angularjs-ng-include
Вопрос:
Я хочу установить фокус на одно из полей ввода в частичном представлении, например.
и включая это с помощью
Это работает нормально при загрузке страницы в первый раз. но когда я меняю части, автофокусировка не работает.
Я считаю, что это из-за работы автофокусировки при загрузке страницы, как это может заставить работать здесь
Комментарии:
1. Есть ли у ваших партиалов свои собственные контроллеры? Или это просто разметка?
2. В моем случае это только разметка
3. Вы проверили решение, которое я предоставил? Есть отзывы по этому поводу?
Ответ №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
переменная, которая должна иметь логическое значение.
Таким образом, каждый раз, когда загружаются ваши части, все директивы внутри них будут связаны и выполнять свою работу. Если вы в конечном итоге используете эту директиву, вы должны быть в состоянии достичь того, чего вы хотите.
Комментарии:
1. Viadik Я не пробовал это, поскольку я делаю то же самое с контроллера, устанавливая фокус вручную, все равно ваш способ лучше моего..