UI-Router是否需要看起来像路由名称的模块名称?

时间:2015-03-10 08:07:47

标签: angular-ui-router angular-ui

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会把所有东西扔进一个大锅里让组件深入挖掘?

谢谢,

1 个答案:

答案 0 :(得分:1)

  

或者Angular会把所有东西扔进一个大锅里让组件深入挖掘?

简而言之:)检查以下Plunker: http://plnkr.co/edit/IYDLbkF11nwCj43wR3jK?p=preview

  1. 加载b.js,包含模块bar
  2. 模块bar设置状态charliealpha
  3. 的子项
  4. 加载a.js,包含模块foo注入bar
  5. 模块foo设置状态bravo,状态alpha的孩子
  6. 模块foo设置状态alpha
  7. 并且它“Just works™”它们使示例中的名称保持清醒,因此它不会像上面那样令人困惑。我认为这样做最好。否则你将有一段时间跟踪什么是什么。