2

所以我正在为我的应用探索不同的配置选项。我的主要目标是找到一种在最高级别配置状态/路由的方法,即使相关的角度模块声明了自己的路由/状态。我想出了几个选项,但我不确定它们是否可能:

假设我有依赖于 module2 的 module1

1:如果 module2 声明了自己的状态/路由,有没有办法可以从 module1 中删除或覆盖它们?

2:有没有办法我可以获得推荐状态列表(表示状态的对象,例如{name: 'state', templateURL: '/someURL'}并使用module1从逻辑上确定哪些stateObjects给$stateProvider?

3:是否可以访问不在配置中的 stateProvider?例如,假设我在配置中设置了以下内容:

tinkModule.config(function($stateProvider, $urlRouterProvider){
    $stateProvider.state('create', {
        url: '/create',
        templateUrl: 'templates/create.html'
    });
    $stateProvider.state("otherwise", {
        url: "/otherwise",
        templateUrl: 'templates/tinkOtherwise.html'
    });
    $urlRouterProvider.otherwise('/otherwise');
});

我可以在他们通过创建状态后添加“审查”状态吗?

如果还有其他我没有考虑的选项,请告诉我,如果上述任何一项可行,请告诉我。

4

1 回答 1

3

听起来您的主要目标是定义跨模块的状态以及延迟加载状态。有一些现有的功能可以完成这些。

跨各个模块注册状态: https ://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-ui-router-from-multiple-modules

您需要使用 grunt 手动构建 0.3.0:https ://github.com/angular-ui/ui-router#developing

然后,如果您想延迟加载(即时定义状态),您可以阅读有关 $stateNotFound 事件的信息:https ://github.com/angular-ui/ui-router/wiki#state-change-events

并查看用于延迟加载的 ui-router 测试:https ://github.com/angular-ui/ui-router/blob/master/test/stateSpec.js#L196-L208

该测试显示您可能如何尝试进入go未定义状态,得到 $stateNotFound 错误,它允许您定义当时的缺失状态。假设您可能已经在错误回调中定义了它,它将总是再次尝试查找状态。

于 2013-10-17T14:22:38.307 回答