Angularjs angular js事件输入以调用元素tr上的函数

Angularjs angular js事件输入以调用元素tr上的函数,angularjs,Angularjs,**控制器** $scope.myFunction=function() { 警惕(‘sadsad’); 警报(“hi”); } **我还添加了如下指示** .指令('ngEnter',函数() { 限制:'严格使用'; 返回{ 链接:功能(范围、元素、属性){ 元素绑定('keydown keypress',函数(事件){ if(event.which==13){ 作用域:$apply(函数(){ 范围$eval(属性n中心); }); event.preventDefault(); } })

**控制器**
$scope.myFunction=function()
{
警惕(‘sadsad’);
警报(“hi”);
}
**我还添加了如下指示**
.指令('ngEnter',函数()
{
限制:'严格使用';
返回{
链接:功能(范围、元素、属性){
元素绑定('keydown keypress',函数(事件){
if(event.which==13){
作用域:$apply(函数(){
范围$eval(属性n中心);
});
event.preventDefault();
}
});
}
};
});
**下面是我调用指令和函数的视图代码**
ng enter根本不会被呼叫。
我该怎么做才能让ng enter正常工作。

试试这样的方法

.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keypress", function (event) {
            if(event.keyCode === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
});
可以省略“限制”选项

编辑:您必须向
添加一个属性,以便它们可以聚焦并接收key*事件:

<tr tabindex="0" ....>


将0替换为其他数字以获得更多可聚焦的

基本上,如果在任何输入字段中使用,ng enter将起作用。但你正在使用中。否则,尝试聚焦该元素并按enter键(可能有效,也可能有效),同时查看指令的
restrict
选项。它不能是
使用严格的
,它应该是
“A”
,例如,可能重复上面尝试过的,但它不工作。。。此外,必须在返回的对象内部使用restrict选项。您使用它的方式是错误的,请参阅最新编辑。。。至少你可以试试。通常情况下,
tr
元素并不意味着要接收key*eventsany javascript中的任何替代项?那么您就没有选择了。这意味着您的表行无法接受按键事件。你在这个概念背后的想法是什么?如何确保表中的一行是“当前元素”您想将
enter
键绑定到?在表中,当用户点击进入这些总线服务时,行是总线服务。如果按enter键根据所选行中的数据加载座椅布局,则会调用函数。您所说的是“按enter键进入一行”和“选定行”。。。你到底是什么意思?您的web应用程序如何使其中一行成为所选行?
<tr tabindex="0" ....>