如果我在两个模块中注册了两个同名的不同指令,最后一个注册会赢吗?

Ben*_*Ben 1 javascript angularjs

在 AngularJS 中,如果我在两个模块中注册两个同名的不同指令,最后注册会赢吗?IIUC Angular 模块不提供命名空间。

此外,Angular 中的模块除了提供方便的注入器配置分组之外是否还提供任何其他功能?

换句话说——你能在运行时检测到某个模块(比如指令)来自哪个模块?

编辑:重新这个问题的第一部分:我认为会的。https://docs.angularjs.org/guide/module

Est*_*ask 5

AngularJS,如果我在两个模块中注册两个同名的不同指令,最后注册会赢吗?

这将是一个“领带”。它们都被注册并被执行。相同指令的执行顺序与其priority定义的顺序相同,link函数会以相反的顺序执行。

如果他们不满足某些条件,即

  • 多个指令请求隔离范围。
  • 多个指令以相同的名称发布控制器。
  • 使用嵌入选项声明的多个指令。
  • 多个指令试图定义模板或模板 URL。

...然后抛出相应的错误。请注意,该文档对“孤立范围”的描述不准确,实际上是“新范围”,既是同步的scope: truescope: { ... }也是被禁止的。每个元素最多一个范围。

换句话说——你能在运行时检测到某个模块(比如指令)来自哪个模块?

不,不是没有入侵 Angular。但是multidir如果存在指令冲突,错误会告诉你模块名称。