У меня есть следующая проблема: я хотел бы сосредоточиться на вводе. Но у меня есть счетчик, который запускается при загрузке страницы и скрыт только при выполнении определенных HTTP-запросов. Также все входы отключены до тех пор, пока запросы не будут выполнены. Так выглядит примерно так:Фокус на элементе html после его включения
<fieldset ng-disabled="!noPendingRequests">
...
<input id="input-to-focus-on" uib-datepicker-popup="MM/dd/yyyy" type="text" ng-model="startDate" ... />
<spinner ng-hide="noPendingRequests"></spinner>
</fieldset>
Spinner - это обычная угловая директива. Существует требование автофокусировки на входе #input-to-focus-on
, но оно не работает. Я попытался сосредоточиться сразу после того, как все http-запросы разрешены с использованием $q.all
. Но это тоже не работает. Я предполагаю, что это происходит, потому что обратный вызов в $q
запускается до того, как вход активируется. Я также пробовал использовать ручное включение:
$q.all(somePromises).then(function() {
angular.element('#input-to-focus-on')[0].disabled = false;
angular.element('#input-to-focus-on')[0].tabIndex = 1;
angular.element('#input-to-focus-on').focus();
});
Я понятия не имею, что делать и буду признателен за любую помощь. Спасибо заранее, ребята!
Возможно, стоит попробовать [директива ngFocus] (https://docs.angularjs.org/api/ng/directive/ngFocus), поскольку она построена для углового потока. – GillesC
@ GillesC спасибо за предложение, но, к сожалению, он тоже не работает –
@ GillesC как насчет этого https://gist.github.com/zbicin/2b3fdf538936287c1a96? Я сделал это некоторое время назад, чтобы служить этой цели. –