在AngularJS自定义指令中,我可以向现有元素添加内置指令吗?

时间:2016-03-13 01:12:10

标签: angularjs

在AngularJS中,如果要通过添加属性来使用自定义指令:

<input type="text" my-directive>

然后我可以在元素中添加ng-keypress="handleKeypress()"吗? (不修改原始HTML,即 我尝试在链接功能中执行此操作:

link: function(scope, elem, attrs) {
    attrs["ngKeypress"] = "handleKeypress()";
}

但它似乎不起作用。如果使用attrs["ng-keypress"]代替attrs["ngKeypress"],也没有任何反应。我也可以使用jQuery或jqLit​​e的

elem.on("keypress", function(ev) { ... });

但我也在考虑使用Angular的方式添加ngKeypress,如果可能的话。

2 个答案:

答案 0 :(得分:1)

试试这个,

link: function(scope, element) {
  element.attr('ng-keypress', 'handleKeypress()');
  element.removeAttr("my-directive"); //remove your directive attribute to restrict indefinite loops
  $compile(element)(scope);
}

DEMO

答案 1 :(得分:0)

<input type="text" ng-keypress="yourFunction()" my-directive>会奏效。

以下是jsbin