我有以下代码:
的index.html:
<a href="" class=”buttonone" ng-click="tool.disc()">
<i class=”buttonone"></i>
</a>
controller.js:
angular.module(’app')
我怎样才能当有人按下按键示例时输入密钥&#39; tool.disc()方法被触发了吗?我想我可以使用angularjs ngKeydown指令,但我不知道如何在上面的代码示例中实现它。有人可以尝试帮忙吗?谢谢!
答案 0 :(得分: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
}
};
答案 1 :(得分:0)
ng-keypress
或ng-keydown
可以解决问题:
<div ng-keypress="yourFunction($event)> </div>
然后在您的函数中,您可以使用
测试密钥的代码$event.keyCode;
例如,如果您想要输入:
$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>
答案 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) })