输入不适用于angularjs的事件

时间:2016-01-12 19:47:31

标签: javascript angularjs

我在模态对话框中为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>

我不确定为什么事件没有被触发。注销方法在按钮单击时正常工作。

1 个答案:

答案 0 :(得分:0)

将您的元素更改为:

<div ng-enter-key="logout()">

用于触发要使用的指令的属性必须遵循某种约定。

根据docs for directives

  

Angular规范化元素的标记和属性名称,以确定哪些元素与哪些指令匹配。我们通常通过其区分大小写的camelCase规范化名称(例如ngModel)来引用指令。但是,由于HTML不区分大小写,我们通过小写形式引用DOM中的指令,通常使用DOM元素上的划线分隔属性(例如ng-model)。

     

规范化过程如下:

     
      
  • 从元素/属性的前面剥离x-和数据。
  •   
  • 将:, - 或_分隔的名称转换为camelCase。
  •   

此外,使用&#34; ng - &#34;它可能不是一种好的形式。任何类型的前缀,除非您打算直接将此类型贡献给角度源。