【问题标题】:Angular directive that matches multiple names匹配多个名称的 Angular 指令
【发布时间】:2016-06-17 05:41:06
【问题描述】:

如何创建一个匹配多个名称的 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> 元素添加另一个属性也不实际。

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

有点像

directive('divX', 'divY', function(){
  //...
})

【问题讨论】:

  • 您想要这样做的任何特殊原因?如果你想在其中一些 div 上共享相同的控制器,你应该用自定义指令替换它们,而不是修改 'div' 目录。如果您只需要更改这些 div 的布局,您可以使用 css 并制作自定义类。
  • 这是对一个相当大的现有应用程序的修改。只有部分 div 需要处理。我不想在这些指令之间分享任何东西。这不是本意。
  • 如果您坚持使用指令来捕获具有特定ids 的元素,我认为任何解决方案都需要遍历divs 的集合。
  • 我需要知道的是,是否可以通过 Angular 本身本地完成遍历。
  • 你所问的甚至没有意义。将您的指令限制为属性 ('a') 并将指令添加到您要处理的每个 div 的 HTML 中,而不是尝试扫描整个 DOM 树以查找特定 Id 会更有意义.....

标签: javascript angularjs angular-directive


【解决方案1】:

严格回答你的问题:

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

如果 name 你的意思是 id,那么不,Angular 不提供将指令与 ids 相关联的可能性,即使是一个。

如果您希望您的指令针对某些 div 元素,您应该为所有这些元素添加一个共享的 class,然后使用一个针对该 div 的指令强>类:

<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();
    }
  };
});

【讨论】:

    【解决方案2】:

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

    它适用于你的情况吗?

    【讨论】:

    • 我在我的问题中非常清楚地提到,这种方法不是一种选择。 //我也不能继续为我需要的所有 ID 编写指令
    • @CharlieH.. 匹配多个元素是什么意思.. 使用什么标识符??
    • Angular 可以匹配 E、A、C 或 M 指令的元素。这是指令所使用的特定名称。我需要知道是否可以有多个名称。
    • 你能解释一下“多个名字”是什么意思吗?
    • 我已经更新了问题,提示我可能正在寻找什么
    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2014-02-04
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多