【发布时间】:2017-12-11 01:59:32
【问题描述】:
角度 documentation for the angular.bootstrap(...) method 表示第二个参数是:
...要加载到应用程序中的模块数组。数组中的每一项都应该是预定义模块的名称或(DI 注释)
我从未见过将多个模块传递给同一个DOM元素的Angular代码......你为什么要这样做? Angular 教程没有提供示例。所以我在 StackOverflow 上找到了this example。此示例将 peopleApp 和 thermostatApp 引导到文档:
angular.bootstrap(document, ['peopleApp','thermostatApp']);
如果这些应用的控制器名称相同,会发生什么情况?喜欢MyCtrl?尊重哪个定义?
如何提升多个模块;与创建一个新的 ConsolidatedModule 不同,它具有 依赖项 到 一个或多个模块 您将被提升,然后只是引导单身 ConsolidatedModule?即
angular.module('ConsolidatedModule', ['peopleApp', 'thermostatApp']);
angular.bootstrap(document, ['ConsolidatedModule'])
需要明确的是,我不是在谈论引导 separate apps to separate DOM elements.(也显示为 here)
其他让我对此感到困惑的轶事证据:
-
你
can'tshouldn't (?) bootstrap an app within another already bootstrap'd app(...因为“遍历 DOM 并设置范围绑定并一直执行指令链接函数。如果你这样做两次,你会遇到问题。”
——然而,用两个模块引导同一个元素不会遇到问题?)
-
在 Angular2 中,
platformBrowserDynamic.bootstrapModule(...)是单数;意味着它只接受一个 single argument (我找不到 API),所以我更加困惑它在角度 1.* 中的 含义 以引导 多个模块到同一个DOM节点。
【问题讨论】:
-
如何提升多个模块;与创建新的 ConsolidatedModule 不同:没有区别,并且适用相同的名称冲突规则。
-
据我所知,没有任何实际理由来设计具有这种结构的应用程序。如果您只需要使用其他人提供的最小化模块,那么可能有一个有用的理由这样做。但是,正如文档在多个地方所建议的那样,该框架不会“针对这种情况进行积极测试”。
-
我怀疑引导代码完全支持这一点很可能是一个不值得努力删除的遗留工件,但在框架的改造中甚至没有考虑到这一点。
-
模块不一定包含应用程序。可能只有一组指令、提供程序和过滤器。示例:
ngRoute、ngCookies、ngAnimate等
标签: angularjs