与多个名称匹配的Angular指令

时间:2016-06-17 05:41:07

标签: javascript angularjs angular-directive

如何创建一个匹配多个名称的Angular指令?我有一系列具有不同ID的<div>元素(数百个)。我想编写一个只匹配其中一些ID的指令。

这样的指令不是一个选项,因为它将为我拥有的所有大量<div>元素调用。

directive('div', function(){
   return {
      restrict: 'e',

      link: function(scope, ele, attr) {
         if (attr.id !== 'divX' || attr.id !== 'divY')
            return;

         processElement();
      }
   }
}) 

此外,我不能继续为我需要的所有ID编写指令。向选定的<div>元素添加另一个属性也不实用。

angular指令是否提供支持匹配多个名称的任何功能?

这样的东西
directive('divX', 'divY', function(){
  //...
})

2 个答案:

答案 0 :(得分:1)

严格回答你的问题:

  

angular指令是否提供支持匹配多个名称的任何功能?

如果按名称表示 id ,则为NO,Angular不提供将指令关联到 ID 的可能性,即使是单身。

如果您希望指令定位一些 div 元素,则应该为所有这些元素添加共享,然后使用以此为目标的指令< strong> class :

<div id="divX" class="user">John</div>
<div id="divY" class="user">Paul</div>

directive('user', function(){
  return {
    restrict: 'C',
    link: function(scope, ele, attr) {
      processElement();
    }
  };
});

答案 1 :(得分:0)

angular.module('ui.directives', [])
      .directive('divX', myDirective)
      .directive('divY', myDirective);

它适用于你的情况吗?