我正在使用Angular JS,我需要编写一个指令,只有当空格键(32)连续按两次时才会启动一个函数。该应用程序还具有表单,用户可能需要在textarea或输入字段中实际两次占用空间,因此我们也需要考虑这一点。我们还需要确保在按空格键时页面不滚动,但是要执行event.preventDefault();实际上阻止了空格键用于在表单元素中键入空格。有关如何实现这一点的任何想法?它甚至可能吗?如果这太难了,我可能会考虑绑定到一个组合键。以下是我目前的样本:
(function() {
"use strict";
angular
.module("app.spaceFunc")
.directive("triggerFunc", triggerFunc);
triggerFunc.$inject = ["$window"];
/* @ngInject */
function triggerFunc($window) {
var directive = {
link: link,
restrict: "A"
};
return directive;
function link(scope, element, attrs) {
var upHitOnce = false;
angular.element($window).bind("keydown", function(event) {
if ((event.keycode || event.which) === 32) {
//Prevents page scrolling (spacebar default's behaviour)
event.preventDefault();
if (upHitOnce) {
//some function gets executed here
console.log("Spacebar pressed twice");
upHitOnce = false;
} else {
upHitOnce = true;
}
} else {
upHitOnce = false;
}
});
}
}
})();
该指令附加到body元素
<body trigger-func>