指令未在<enter> keypress

时间:2015-12-09 20:48:54

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-controller

我正在关注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(),它告诉我我的指令不能正确设置为触发当我按下那个元素时。

1 个答案:

答案 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;