Как нажать в AngularJS

0

У меня есть следующий код:

index.html:

<a href="" class="buttonone" ng-click="tool.disc()">
    <i class="buttonone"></i>
</a>

controller.js:

angular.module(app')

Как я могу сделать так, чтобы, когда кто-то нажал на пример нажатия клавиши "ввести ключ", запускается метод tool.disc()? Я полагаю, что могу использовать директиву angularjs ngKeydown, но я не знаю, как ее реализовать в приведенном выше примере кода. Может кто-то попытается помочь? Благодарю!

Теги:
angularjs-directive
angularjs-ng-repeat
keypress

3 ответа

1

Вы не можете напрямую вызвать функцию специально при Enter key press, используйте функцию, чтобы проверить, нажата ли клавиша Enter, а затем вызовите свою функцию.

Вы не можете прослушать событие Keypress на якоре.

HTML:

<input type="text" ng-keypress="myFunc(e)" />
<!--               ^^^^^^^^^^^^^^^^^^^^^^^ -->
<i class="buttonone"></i>

контроллер:

$scope.myFunc = function (event) {
    if (event.keyCode === 13) {
        console.log('Enter key pressed');

        $scope.tool.disc(); // Call your function here
    }
};
  • 0
    Вы не можете прослушивать нажатие клавиш / нажатие клавиш на теге <a>.
  • 0
    @enguerranws Спасибо! Пожалуйста, проверьте обновленный ответ
Показать ещё 2 комментария
0

Элемент должен быть сосредоточен на работе. Чтобы этот пример работал, вам нужно щелкнуть ссылку, а затем нажать клавишу.

<a href="" ng-keydown="keydown($event)">Keydown</a> 

$scope.keydown = function (event) {
    if (event.keyCode === 13) {
        console.log('Enter key pressed');
    }
};

Чтобы автоматически сфокусироваться на элементе после загрузки, вы можете использовать

element[0].focus()

В противном случае рассмотрим следующее:

$document.addEventListener('keyup', function (e) { console.log(e) })
  • 0
    codepen.io/timsmiths/pen/oXEqYV?editors=101
  • 0
    Есть ли живой пример работы первой части? Не может заставить это работать, даже после того, как оно сфокусировано или щелкнуло.
Показать ещё 2 комментария
0

ng-keypress или ng-keydown могут сделать трюк:

 <div ng-keypress="yourFunction($event)> </div>

И затем в вашей функции вы можете проверить код ключа с помощью

$event.keyCode;

Например, если вы хотите выполнить chch на enter:

$scope.yourFunction = function(event){
  if(event.keyCode == 13){
     console.log("Enter press");
  }
}

Редактировать :

Потому что когда-то это не работает так сильно, как хотелось бы его, есть директива:

app.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
});

Здесь это для входа, вы можете изменить код ключа, если вам нужно. Чтобы использовать его, вы можете просто сделать это в каждом элементе:

<a href="" class="buttonone" ng-enter="function()" ng-click="tool.disc()">
    <i class="buttonone"></i>
</a>
  • 0
    Думаю, было бы интересно прикрепить его к корпусу, прослушать каждое нажатие клавиши?
  • 0
    Это зависит от использования. Если вам нужна вся страница, вы можете сделать это, да. Но иногда вам просто необходимо прослушать ввод или что-то еще, и нет необходимости постоянно вызывать эту функцию. Это может быть даже проблемой, если вы нажмете клавишу, когда вам не нужно делать оператор в функции.
Показать ещё 6 комментариев

Ещё вопросы

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