如果我在两个模块中注册两个具有相同名称的不同指令,最后一个注册会获胜吗?



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

还有,Angular中的模块除了提供了一个方便的注入器配置分组之外,还能提供其他功能吗?

换句话说-你能在运行时检测到哪个模块的东西(说一个指令)来自?

这是这个问题的第一部分:我认为它会。https://docs.angularjs.org/guide/module

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

这将是一个"平局"。它们都是注册的,都是执行的。具有相同priority的指令的执行顺序与其定义的顺序相同,并且link函数将以相反的顺序执行。

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

  • 多个指令请求隔离作用域。
  • 多个指令以相同的名称发布一个控制器。
  • 用transclusion选项声明多个指令。
  • 多个指令试图定义一个模板或templateURL.

…然后抛出相应的错误。注意文件中"隔离作用域"是不准确的,实际上是"新作用域",同时禁止scope: truescope: { ... }。每个元素一个作用域。

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

不行,除非你破解了Angular。但是如果有指令冲突,multidir错误会告诉你模块的名字。

最新更新