У меня есть следующий код:
index.html:
<a href="" class="buttonone" ng-click="tool.disc()">
<i class="buttonone"></i>
</a>
controller.js:
angular.module(app')
Как я могу сделать так, чтобы, когда кто-то нажал на пример нажатия клавиши "ввести ключ", запускается метод tool.disc()? Я полагаю, что могу использовать директиву angularjs ngKeydown, но я не знаю, как ее реализовать в приведенном выше примере кода. Может кто-то попытается помочь? Благодарю!
Вы не можете напрямую вызвать функцию специально при 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
}
};
Элемент должен быть сосредоточен на работе. Чтобы этот пример работал, вам нужно щелкнуть ссылку, а затем нажать клавишу.
<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) })
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>