AngularJS:ng-keypress 不起作用

Posted

技术标签:

【中文标题】AngularJS:ng-keypress 不起作用【英文标题】:AngularJS: ng-keypress is not working 【发布时间】:2014-11-24 06:51:07 【问题描述】:

问题:ng-keypress 不起作用,但如果我将 ng-keypress 替换为 ng-clickfilterSearchData($event) 功能正常。

HTML:-

<!DOCTYPE html>
<html ng-app="myApp">
    <head lang="en">
        <meta charset="utf-8">
        <title>Custom Plunker</title>  
        <link rel="stylesheet" type="text/css" href="ng-grid.css" />
        <link rel="stylesheet" type="text/css" href="style.css" />
        <script src="jquery.min.js"></script>
        <script src="angular.min.js"></script>
        <script type="text/javascript" src="ng-grid.debug.js"></script>
        <script type="text/javascript" src="main.js"></script>
    </head>
    <body>
        <body ng-controller="MyCtrl">
            <input type="text" ng-keypress="filterSearchData($event)" />
            <div class="gridStyle" ng-grid="gridOptions"></div>
        </body>
    </body>
</html>

JS:-

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope, $http) 
    $scope.filterSearchData = function(element) 
        console.log(element);
    ;
);

【问题讨论】:

您使用的是哪个版本的 Angular?我不相信它一直受到支持 @lan: 我正在使用 AngularJS v1.0.2 【参考方案1】:

在这种情况下,我建议使用ng-change 而不是ng-keypress

// HTML:
<input type="text" ng-model="filter" ng-change="filterSearchData()" />

// Controller:
app.controller('MyCtrl', function($scope, $http) 
    $scope.filterSearchData = function() 
        console.log($scope.filter);
    ;
);

【讨论】:

【参考方案2】:

如果由于某种原因您必须使用不支持 ngKeypress 指令的旧版本的 angular,您可以随时添加自己的实现。这很容易做到,例如onKeypress指令:

app.directive('onKeypress', function() 
    return 
        scope: 
            handler: '&onKeypress'
        ,
        link: function(scope, element) 
            element.bind('keypress', function(e) 
                scope.handler($event: e);
            );
        
    ;
);

HTML:

<input type="text" on-keypress="filterSearchData($event)" />

演示:http://plnkr.co/edit/OorXMYKZeXI9Lrc1wrRY?p=preview

【讨论】:

以上是关于AngularJS:ng-keypress 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

angularjs之手机输入法回车变搜索,并触发事件,兼容pc回车事件

我的Android进阶之旅------&gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

Angularjs引导下拉菜单不起作用

组件绑定不起作用:Angularjs

angularjs提交按钮不起作用