Я пытаюсь запустить uib-popover с настраиваемым событием. По причинам доступности я хочу, чтобы фокус переместился на элемент в шаблоне всплывающего окна после его появления. Это событие, которое устанавливает для "popover-is-open" значение true, чтобы открыть его.
self.openPopoverAndFocus = function (currEvent) {
// This variable is bound to the popover-is-open flag
currEvent.popOverOpen = true;
// The element within the template I want to focus to.
var Element = $window.document.getElementById('eventViewPopoverButton');
if (Element) {
alert("We're in");
Element.focus();
}
};
Проблема в том, что элемент по идентификатору не обнаруживается, когда я его открываю. Если всплывающее окно уже открыто, этот код работает нормально, и фокус смещен. Как мне сместить фокус при открытии?
FYI, мои попытки до сих пор -
- Я пытался использовать
setTimeOut()
в вызове getElementById()
, чтобы отложить его после того, как всплывающее окно оказано. Это не помогло. - Я попытался создать
$scope.$watch
для переменной event.popOverOpen
, однако $scope
не вводится в этот контроллер, и это кажется неоптимальным решением.