Angularjs 将其他指令添加到angular.js中的同一元素的指令

Angularjs 将其他指令添加到angular.js中的同一元素的指令,angularjs,Angularjs,如何创建向元素添加其他指令的指令 例如,我想要: <input tag/> 链接为: <input ng-pattern='/[\\w\\d]+/' ng-maxlength='10'/> 我想出了一个似乎有效的解决方案: 指令('tag',['$compile',函数($compile){ 返回{ 优先权:1000, 终端:是的, 编译:函数(远程通讯、属性){ 属性$set('tag',null); 属性$set('ngMaxlength','10'); 属性

如何创建向元素添加其他指令的指令

例如,我想要:

<input tag/>

链接为:

<input ng-pattern='/[\\w\\d]+/' ng-maxlength='10'/>

我想出了一个似乎有效的解决方案:

指令('tag',['$compile',函数($compile){ 返回{ 优先权:1000, 终端:是的, 编译:函数(远程通讯、属性){ 属性$set('tag',null); 属性$set('ngMaxlength','10'); 属性$set('ngPattern','/[\\w\\d]+/'); var link=$compile(远程通讯); 返回函数($scope$element){ 链接($范围、功能(克隆元素){ $element.replacetwith(clonedElement); }); } } } }]);
关键是确保该指令的优先级高于元素和终止上的所有其他指令,这样其他指令就不会被编译和链接。

我不认为有必要使用
$compile()
、链接函数或
终端。Angular将自动为我们编译
telement

.directive('tag', [function() {
  return {
    priority: 1000,
    compile: function(telement, attrs) {
      attrs.$set('tag', null);
      attrs.$set('ngMaxlength', '10');
      attrs.$set('ngPattern', '/[\\w\\d]+/');
    }
  };
}]);
使用此HTML进行测试:

<input ng-model="test" ng-init="test=2" tag>
{{test}}

{{test}}

.

谢谢你指出我的属性。$set!然而,使用此设置ng模型似乎不起作用。有什么想法吗?您的plunker的一个修改显示:@MrException,我不知道为什么它不起作用。这里有一个关于这个问题的问题:Super@Mark,我一直在拔头发尝试
attrs.$set('ng-pattern')
,但不理解为什么它在html中看起来相同,但什么都没有发生。我想指出的是,在当前Firefox、Chrome和Angular 1.0.7的快速测试中,模式ng验证似乎不需要
优先级:1000
。这不适用于Angular(1.3+)的新版本