为什么要将*多个* Angular模块引导到* * *元素

时间:2017-07-06 21:50:36

标签: angularjs

角度documentation for the angular.bootstrap(...) method表示第二个参数是:

  

...要加载到应用程序中的模块数组。数组中的每个项目应该是预定义模块的名称或(DI注释)

我从未见过通过多个模块的Angular代码被提升到相同的DOM元素...为什么要这样做呢?角度教程没有提供一个例子。所以我在StackOverflow上找到了this example。此示例将peopleAppthermostatApp引导至文档:

angular.bootstrap(document, ['peopleApp','thermostatApp']);

如果这些应用程序的控制器名称相同,会发生什么?像MyCtrl一样?哪个定义受到尊重?

如何提升多个模块;不同于创建新的ConsolidatedModule,其中包含 依赖 一个或多个模块 boostrapped ,然后只引导 ConsolidatedModule?即

angular.module('ConsolidatedModule', ['peopleApp', 'thermostatApp']);
angular.bootstrap(document, ['ConsolidatedModule'])

要明确,我不是在谈论引导separate apps to separate DOM elements.(也显示为here

其他轶事证据让我对此感到困惑:

  • can't shouldn't (?) bootstrap an app within another already bootstrap'd app(...因为

      

    "遍历DOM并设置范围绑定并执行指令链接功能。如果你两次这样做,你就会遇到问题。"

    - 然而,用两个模块引导相同的元素不会遇到问题?)

  • 在Angular2中,platformBrowserDynamic.bootstrapModule(...)是单数;暗示它只接受单个参数(我无法找到API),所以我更加困惑它在角度1中的意味着。*将多个模块引导到同一个DOM节点。

1 个答案:

答案 0 :(得分:1)

之间没有区别
angular.module('ConsolidatedModule', ['peopleApp', 'thermostatApp']);
angular.bootstrap(document, ['ConsolidatedModule'])

angular.bootstrap(document, ['peopleApp', 'thermostatApp'])

除了在第一种情况下创建的不需要的ConsolidatedModule模块。仅创建了一个注入器,使用多个模块进行引导与多个引导无关。

第二个参数允许动态提供模块列表。即。

const modulesList = ['foo'];

if (ENV_BAR)
  modulesList.push('bar');

angular.bootstrap(document, modulesList);