角度documentation for the angular.bootstrap(...)
method表示第二个参数是:
...要加载到应用程序中的模块数组。数组中的每个项目应该是预定义模块的名称或(DI注释)
我从未见过通过多个模块的Angular代码被提升到相同的DOM元素...为什么要这样做呢?角度教程没有提供一个例子。所以我在StackOverflow上找到了this example。此示例将peopleApp
和thermostatApp
引导至文档:
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并设置范围绑定并执行指令链接功能。如果你两次这样做,你就会遇到问题。"
- 然而,用两个模块引导相同的元素不会遇到问题?)
platformBrowserDynamic.bootstrapModule(...)
是单数;暗示它只接受单个参数(我无法找到API),所以我更加困惑它在角度1中的意味着。*将多个模块引导到同一个DOM节点。答案 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);