Angularjs 将ngKeyUp函数传递到指令

Angularjs 将ngKeyUp函数传递到指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个包含输入字段的指令/模板 输入字段有一个ngKeyup和一个ngModel 我希望将ngKeyup函数传递到指令中。指令/模板中输入字段上的ngKeyup应调用此函数 此plunker显示选项1和选项2 选项1最简单且部分有效,函数仅由“=”传入,指令在ngKeyUp属性中引用它 指示 模板 这部分起作用,但未传递$event对象 在选项2中,指令以“&”的形式从控制器接收函数,尝试$parse并调用它。这对我来说根本不起作用,但我对$parse不是很熟悉 ngKeyup可以接收任何参数

我有一个包含输入字段的指令/模板

输入字段有一个ngKeyup和一个ngModel

我希望将ngKeyup函数传递到指令中。指令/模板中输入字段上的ngKeyup应调用此函数

此plunker显示选项1和选项2

选项1最简单且部分有效,函数仅由“=”传入,指令在ngKeyUp属性中引用它

指示

模板

这部分起作用,但未传递$event对象

在选项2中,指令以“&”的形式从控制器接收函数,尝试$parse并调用它。这对我来说根本不起作用,但我对$parse不是很熟悉

ngKeyup可以接收任何参数,例如ng keyupa、b、c、$index、$event

关键点/要求是该指令应相同,即myKeyUp应能够接受任何参数

非常感谢任何帮助或指点

谢谢
John

它的作用域必须是“&”,因为它允许您传递函数引用

您必须在模板中执行的操作是:

<input type="text" ng-model="model" ng-keyup="myKeyUp($event)" />
更新:
这里有另一种方法,你可以采取:

事实证明有一个非常简单的解决方案

引述问题

我希望将ngKeyup函数传递到指令中。指令/模板中输入字段上的ngKeyup应调用此函数

事实证明,div可以简单地具有ng keyup属性,而不必位于输入字段上。 这完全解决了问题

现在,该指令仅将模型作为参数。ngKeyup不在指令范围内

ngApp.directive("searchField", ['$parse',function ($parse) {

return {
    restrict: "E",
    scope: {
        model: '='
    },
    templateUrl: 'searchFieldTemplate',
    replace: true,
    controller: ['$scope','$attrs', function ($scope, $attrs) {

    }]
  };

}]);
模板现在只与模型有关

<div class="searchField">
<h4>Template</h4>
  (observe the console)
<div>
  <input type="text" ng-model="model" />
</div>

这实际上是一种分配,因为当您考虑它时……

谢谢Aganglada,但是$event仍然没有定义:如果您查看控制台,日志显示“undefined”
ngApp.directive("searchField", ['$parse',function ($parse) {

return {
    restrict: "E",
    scope: {
        model: '='
    },
    templateUrl: 'searchFieldTemplate',
    replace: true,
    controller: ['$scope','$attrs', function ($scope, $attrs) {

    }]
  };

}]);
<div class="searchField">
<h4>Template</h4>
  (observe the console)
<div>
  <input type="text" ng-model="model" />
</div>