Javascript AngularJS特殊范围安排

Javascript AngularJS特殊范围安排,javascript,angularjs,Javascript,Angularjs,所以我有一个有趣的情况。我有一个angularJS应用程序,分为几个不同的模块。这样做是为了使不同的部分尽可能通用,并最终重用。其中一个模块是uiTemplate模块,它处理非常常见的处理ui的任务,如可展开/可折叠部分。是否可以将其他模块放置在uitemplate模块的“下方”,以便它们在发出事件时通过uitemplate?目标是能够在uitemplate模块不了解其他模块的情况下执行此操作,或者换句话说,uitemplate对其他模块没有任何“硬编码”依赖关系。如果我可以动态地告诉uitem

所以我有一个有趣的情况。我有一个angularJS应用程序,分为几个不同的模块。这样做是为了使不同的部分尽可能通用,并最终重用。其中一个模块是uiTemplate模块,它处理非常常见的处理ui的任务,如可展开/可折叠部分。是否可以将其他模块放置在uitemplate模块的“下方”,以便它们在发出事件时通过uitemplate?目标是能够在uitemplate模块不了解其他模块的情况下执行此操作,或者换句话说,uitemplate对其他模块没有任何“硬编码”依赖关系。如果我可以动态地告诉uitemplate它的依赖项就可以了,我只想避免将特定于应用程序的代码放入模块中。可能的想法?

看起来像这样:

<div ng-controller="ParentCtrl">
    <div ng-controller="Child1Ctrl"></div>
    <div ng-controller="Child2Ctrl"></div>
</div>


但是,如果您正在谈论仅共享UI元素,那么将它们设置为指令可能更有意义。它们的编译方式不同,您可以从任何视图调用它们。

您可能会想到嵌套控制器。您可以有一个“父”控制器来处理$scope.$broadcast事件并将其下放到子控制器。子控制器可以向父控制器发出$scope.$。需要记住的重要部分是,子控制器和父控制器不共享$scope。我想我理解您的意思,但我的问题是,如何在不声明模块的情况下使其他模块成为uitemplate模块的子模块:var uiTemplateModule=angular.module('uitemplate',['translation','ui','uiComponents');基本上,您只需嵌套DOM元素。答案中的代码。是的,这就是我试图避免的。。。是否可以从uitemplate编译指令,然后使用该范围从其他模块编译主指令,并将其附加到uitemplate?编译指令的方式与编译控制器的方式不同。只要它们包含在主应用程序中,你就可以在任何地方给它们打电话。您还可以嵌套指令以共享作用域。