2013-07-24 33 views
0

所以我有一个有趣的情况。我有一个angularJS应用程序分解成几个不同的模块。这样做是为了让不同的部分尽可能通用并最终重用。其中一个模块是一个uiTemplate模块,用于处理与UI相关的常见任务,如可展开/可折叠部分。是否可以将其他模块放置在uitemplate模块“下方”,以便当它们发出事件时通过uitemplate?我们的目标是在没有任何关于其他模块的情况下,或者换句话说,没有任何其他模块具有任何“硬编码”依赖关系的情况下,能够做到这一点。如果我可以动态地告诉uitemplate它的依赖关系,那么我只想避免将特定于应用程序的代码放入模块中。可能的想法?AngularJS特殊范围安排

+0

您可能正在考虑嵌套控制器。你可以有一个“父”控制器来处理$ scope。$广播事件到子控制器。孩子可以$ scope。$发送给父控制器。要记住的重要部分是子级和父级控制器不共享$ scope。 – Sharondio

+0

我想我明白你在说什么,但我的问题是我如何使uitemplate模块的其他模块的孩子没有声明这样的模块:var uiTemplateModule = angular.module('uitemplate',['translation','ui ','uiComponents']); –

+0

几乎你只是嵌套DOM元素。代码在答案中。 – Sharondio

回答

0

这将是这个样子:

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

但是,如果你在谈论分享刚刚UI元素,它可能会更有意义,使他们的指令。它们的编译方式不同,您可以从任何视图中调用它们。