我想在AngularJS应用程序中设置一个onkeypress
侦听器,以便能够捕获所有按键。
问题:
这是我正在使用的HTML代码:
<html ng-app="moduleName">
<body ng-controller="ControllerName" ng-keypress="keyPress($event)">
</body>
</html>
这是JavaScript代码:
var app = angular.module("moduleName", []);
var ControllerName = function($scope) {
$scope.keyPress = function($event) {
// Logic goes here.
};
};
答案 0 :(得分:1)
通常,Angular Application有多个控制器,因此,您可能需要: -
在应用程序初始化时将keyPress方法设置为rootscope(因为您似乎希望在应用程序的任何位置从keypress调用此方法。
app.config(['$routeProvider', '$rootScope',
function ($routeProvider, $rootScope) {
$routeProvider.when('/Sample', {
templateUrl: 'views/Sample.html',
controller: 'sampleController'
});
$routeProvider.otherwise({ redirectTo: '/app' });
$rootScope.keypress = function($event) {
/* some code goes here */
};
}]);
您也可以将指令用于相同的目的,这看起来更合适的方式来处理这个
app.directive('listenToKeypress', function() {
return {
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
elem.bind('keypress', function(e) {
/* do something here */
});
}
};
});
和html可以是: -
<html ng-app="moduleName">
<body ng-controller="ControllerName" listen-to-keypress>
</body>
</html>