我的场景是经典的门户/ CMS小部件场景:
“家庭”概念只是一组小部件通过数据或目的相互关联,相互通信并影响彼此的UI。此外,多个家庭可以在同一页面上混合使用。
AngularJS似乎将开发人员推向页面根目录的一个模块,使用控制器来处理页面的各个部分。但是,这意味着来自不同团队的开发人员可能会以不同的冲突方式影响pageApp
模块。
似乎需要手动引导方法来定位DOM的部分或使用特定模块的“部分视图”。
angular.element(document).ready(function() {
angular.module('myApp', []);
angular.bootstrap(document, ['myApp']);
});
...但我对根据免责声明失去的东西感到紧张
angular.bootstrap不会动态创建模块。你必须创建 任何自定义模块,然后再将它们作为参数传递。
...我猜你不能将多个模块应用于同一个DOM元素?正确的吗?
如果无法将多个模块分配给同一个根DOM元素,那么推荐的方法是什么?
我认为家庭/家庭内部的沟通可以由酒吧/子模型处理。
但每个小部件都是模块吗?如果是这样,那么同一小部件的多个实例是否需要不同的模块名称 - 动态生成(例如,thing1,thing2)?
每个小部件都不能成为控制器,因为这意味着混合族必须具有相同的模块。
编辑1 :(示例) 给定页面具有依赖于xhr-data的列表小部件和详细小部件。它们彼此依赖,但可以在页面的任何位置。单击列表中的项目会更改详细信息。页面上还有另外两个小部件。一个有多个选择器,影响另一个显示的xhr数据量。最后,最后一个独立的小部件是一个独立的手风琴。可以放置小部件,使得没有单个HTML节点明确地封装每个族。
答案 0 :(得分:0)
我认为你误解了模块。模块注入其他模块,因此您可以随意混合搭配。视图(部分或完整页面)将与控制器相关。控制器可以访问已注入控制器所在模块的模块中的任何功能。
使用您的小部件,您很可能希望将窗口小部件系列组织到单独的模块中,然后将一个或多个这些模块注入到与视图相关的控制器的模块中。这允许您根据视图的特定需求进行混合和匹配。各个小部件可以是小部件系列模块中的功能,服务,指令和过滤器的混合。
如果您遇到不同系列中的小部件需要使用相同服务(例如 - 通用API)的情况,请将服务放在一个单独的模块中,该模块注入需要它的小部件系列模块或任何其他模块需要它。
我希望这会让你朝着更好的方向前进。模块和依赖注入很棒,因为你可以用很多不同的方式混合和匹配。
如果您提供一些小部件,小部件系列,常用服务以及您在各种页面上设想它们的具体示例,那么我可以为您提供有关如何组织代码的一些具体想法。