Как переместить фокус на элемент, который еще не отобразился с помощью uib-popover в AngularJS? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь запустить 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 не вводится в этот контроллер, и это кажется неоптимальным решением.
...