ui-router的常见问题解答说:
#492合并(v0.2.8)后,您现在可以按任意顺序和跨模块注册状态。您可以在父状态存在之前注册孩子。它会将它们排队,一旦父状态被注册,孩子就会被注册。注意:您仍然需要管理模块依赖性。
angular.module('main', ['main.page1']).config(function($stateProvider) {
$stateProvider.state('main', {...})
});
angular.module('main.page1', []).config(function($stateProvider) {
$stateProvider.state('main.page1', {...})
});
引用的文本没有明确说明模块的命名对路由状态配置的成功很重要。似乎无论您的路由状态在何处定义,只要模块都被认为是“正确依赖”,那么所有配置的状态都将被注册,整理并开始运行。
但是,在紧接上述文本之后的示例中,相关模块的命名遵循路由的精确命名。在以下示例中也是如此,该示例包含在可以从github下载的ui-router存储库中。
angular.module('uiRouterSample', [
'uiRouterSample.contacts',
'uiRouterSample.contacts.service',
'uiRouterSample.utils.service',
'ui.router',
'ngAnimate'
])
angular.module('uiRouterSample.contacts', [
'ui.router'
])
我的印象是“管理模块依赖关系”需要创建一个依赖模块树,这些模块由其注入的请求依赖项的命名列表引用。但是,这些示例的含义是(至少ui-router)依赖于模块命名层次结构以及状态命名层次结构。
事实上,我在不同模块的配置功能中配置的状态之间导航时遇到了问题。因此,如果有一些关于“管理模块依赖关系”的指导将使得“现在您可以按任何顺序和任何模块注册状态”的承诺是真的,那么我想让这个秘密进入。
如果命名不重要,那么有人可以明确指出模块中的依赖关系必须指向哪个方向,以便ui-router状态能够看到它们的子状态?
在模块本身之间的依赖关系中,最常见的依赖关系位于根目录附近,因为当我们向叶子行进时发生的分支限制了跨分支依赖性,因为循环引用的可能性。所以我期待听到ui-router也看到离子根更远的状态作为子状态,并且他们必须是兄弟姐妹,以防我们想要向任何方向但往上走,(从父母到孩子) )
但同样,我的问题是关于命名层次结构:状态层次结构和模块层次结构必须相同地命名(不太可能),或者状态和模块的依赖关系层次必须在语义上是相同的,或者更可能的是,它们必须是可穿越相同?或者Angular会把所有东西扔进一个大锅里让组件深入挖掘?
谢谢,
答案 0 :(得分:1)
或者Angular会把所有东西扔进一个大锅里让组件深入挖掘?
简而言之:)检查以下Plunker: http://plnkr.co/edit/IYDLbkF11nwCj43wR3jK?p=preview
b.js
,包含模块bar
。bar
设置状态charlie
,alpha
a.js
,包含模块foo
注入bar
。foo
设置状态bravo
,状态alpha
的孩子foo
设置状态alpha
并且它“Just works™”它们使示例中的名称保持清醒,因此它不会像上面那样令人困惑。我认为这样做最好。否则你将有一段时间跟踪什么是什么。