AngularJS:ng-keypress 不起作用
Posted
技术标签:
【中文标题】AngularJS:ng-keypress 不起作用【英文标题】:AngularJS: ng-keypress is not working 【发布时间】:2014-11-24 06:51:07 【问题描述】:问题:ng-keypress 不起作用,但如果我将 ng-keypress
替换为 ng-click
则 filterSearchData($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进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法