угловой элемент ввода нг-фокус / фокус

0

У меня есть три элемента ввода в виде кнопок. На ng-keyup я вызываю функцию в своем контроллере.

Изображение 174551

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

Я попробовал ng-focus = 'focus', а затем задал $ scope.focus = true в контроллере, это не сработало.

  <div class="row startButtonRow">
    <div class="col col-50" align="center">
      <button class="button button-dark startButton" ng-click="start()" ng-disabled="disableStart">Start</button>
    </div>

    <div class="col" align="center">
      <input ng-focus="focus" type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)">
    </div>

    <div class="col" align="center">
      <input type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)">
    </div>

    <div class="col" align="center">
      <input type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)">
    </div>

  </div>

Как только я нажимаю кнопку " Пуск", символы начинают появляться на трех столбцах, и я должен нажать соответствующую кнопку (здесь введите элемент с клавишей), как только появится конкретный символ. Я не хочу сначала щелкнуть по элементу, а затем использовать клавиши клавиатуры.

Теги:
ionic-framework

1 ответ

1
Лучший ответ

ng-keyup не нужно использовать один из ваших элементов ввода, вы можете перенести его в свой элемент body или любой элемент вашего ng-app, и он все равно будет захватывать нажатия клавиш.

С другой стороны, я считаю, что вы не понимаете, что делает ng-focus. Он оценивает данное выражение при фокусировке ввода, он не говорит вашему браузеру сфокусировать этот элемент. Вы хотите создать настраиваемую директиву для фокусировки ваших входов, см. Раздел Как настроить фокус на поле ввода?

Вы можете добавить что-то вроде этого к контроллеру:

var handler = function(e){
    if (e.keyCode === 37) {
      // left arrow
    } else if (e.keyCode === 38) {
      // up arrow
    } else if (e.keyCode === 39) {
      // right arrow
    }
};

var $doc = angular.element(document);

$doc.on('keyup', handler);
$scope.$on('$destroy',function(){
  $doc.off('keyup', handler);
})
  • 0
    Я получил ваше первое замечание о ng-keyup, я заметил это, когда реализовал. Можно ли нажимать эти три кнопки кнопками клавиатуры <-, ^, -> и не щелкать мышью? Я не нашел никакого ответа на это, поэтому я пошел с вводом и ng-keyup. да, я ошибся с ng-focus, спасибо!
  • 0
    см. изменения к моему ответу
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню