【发布时间】: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