我正在关注this SO Post创建Enter keypress指令。
这是我的JS,我在其中模拟相同的功能:
的JavaScript
var app = angular.module('myApp', []);
app.controller('MainCtrl', ['$scope', function($scope) {
$scope.greeting = 'Hola!';
}]);
app.directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if(event.which === 13) {
scope.$apply(function (){
scope.$eval(attrs.myEnter);
});
event.preventDefault();
}
});
};
});
function callServerWithSong(){
alert("calling!");
}
HTML
<div id="search" ng-app="myApp" ng-controller="MainCtrl">
<input type="text" id="search" my-enter="calServerWithSong()">
</div>
问题在于,当我选择输入框时,键入一个字符串并按Enter键,它不报告错误或执行alert()
,它告诉我我的指令不能正确设置为触发当我按下那个元素时。
答案 0 :(得分:3)
在传递指令属性时,您有一个方法名称的拼写错误。该方法也应该在控制器的$scope
中。
<强> HTML 强>
<div id="search" ng-app="myApp" ng-controller="MainCtrl">
<input type="text" id="search" my-enter="callServerWithSong()">
</div>
<强>代码强>
function callServerWithSong(){
alert("calling!");
}
$scope.callServerWithSong = callServerWithSong;