我在模态对话框中为enter键创建了一个事件,但由于某种原因它无法正常工作。
(function () {
'use strict';
var app = angular.module('myModule')
.directive('ngEnterKey', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
var keyCode = event.which || event.keyCode;
// If enter key is pressed
if (keyCode === 13) {
scope.$apply(function() {
// Evaluate the expression
scope.$eval(attrs.dlEnterKey);
});
event.preventDefault();
}
});
};
});
<div ngEnterKey="logout()">
...
<a href="#" data-ng-click="logout()">Yes </a>
<a href="#" data-ng-click="cancel()">No </a>
...
</div>
我不确定为什么事件没有被触发。注销方法在按钮单击时正常工作。
答案 0 :(得分:0)
将您的元素更改为:
<div ng-enter-key="logout()">
用于触发要使用的指令的属性必须遵循某种约定。
Angular规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的camelCase规范化名称(例如ngModel)来引用指令。但是,由于HTML不区分大小写,我们通过小写形式引用DOM中的指令,通常使用DOM元素上的划线分隔属性(例如ng-model)。
规范化过程如下:
- 从元素/属性的前面剥离x-和数据。
- 将:, - 或_分隔的名称转换为camelCase。
此外,使用&#34; ng - &#34;它可能不是一种好的形式。任何类型的前缀,除非您打算直接将此类型贡献给角度源。