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

jos*_*tay 6 angularjs

如何创建将其他指令添加到元素的指令?

例如,我想:

<input tag/>
Run Code Online (Sandbox Code Playgroud)

链接为:

<input ng-pattern='/[\\w\\d]+/' ng-maxlength='10'/>
Run Code Online (Sandbox Code Playgroud)

jos*_*tay 1

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

.directive('tag', ['$compile', function($compile) {
  return {
    priority: 1000,
    terminal: true,
    compile: function(telement, attrs) {
      attrs.$set('tag', null);
      attrs.$set('ngMaxlength', '10');
      attrs.$set('ngPattern', '/[\\w\\d]+/');

      var link = $compile(telement);

      return function($scope, $element) {
        link($scope, function(clonedElement) {
         $element.replaceWith(clonedElement);
        });
      }
    }
  }
}]);
Run Code Online (Sandbox Code Playgroud)

关键是确保该指令比元素上的所有其他指令具有更高的优先级并终止,以便其他指令不会被编译和链接。