angularjs相同的指令名称冲突

时间:2013-12-12 14:54:09

标签: javascript angularjs

这里有一个菜鸟问题。当我使用外部模块时,如何避免相同的指令名冲突。目前我正在使用angular bootstrap模块,但是下载了另一个module只是为了从那里使用轮播。它们都具有相同的指令名carousel,如果我在模块中包含这两个,它会导致我的问题。

var app = angular.module('text', ['fundoo.directives', 'ui.bootstrap']);

对此最好的解决方案是什么?

3 个答案:

答案 0 :(得分:5)

实际上所有指令都已执行,您可以使用priority paramenter

配置执行顺序
  

<强>优先级:

     

当在单个DOM元素上定义了多个指令时,有时需要指定应用指令的顺序。优先级用于在调用编译函数之前对指令进行排序。优先级定义为数字。首先编译具有更高数字优先级的指令。预链接功能也按优先级顺序运行,但后链接功能以相反的顺序运行。具有相同优先级的指令的顺序是未定义的。默认优先级为0。

当您找到terminal参数设置为true

的指令时,您也可以告诉angular停止当前元素中的指令消化

https://docs.angularjs.org/api/ng/service/$compile

关于创建优先级的解决方案仍然比问题复杂一点,所以我会坚持@nico的解决方案

而且,这里是一个测试角度执行两者的掠夺者

http://plnkr.co/edit/e66I71UKp5mnurcjVzN4

答案 1 :(得分:1)

如果指令之间只有一个名称冲突,请将模块列为要用作第一个依赖项的轮播。从my test我得出结论,忽略了具有相同名称的其他指令(第一个获胜)。

答案 2 :(得分:1)

如果我我使用前缀作为我自己的Angular指令/服务/等,那就是我最近在做的事情而且我没有任何冲突问题。

或者,只需将有问题的指令重命名为更详细或具体的指令。