AngularJS UI-Router更改从属模块的状态

时间:2013-10-16 16:00:16

标签: angularjs angular-ui-router

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

假设我有module1,它依赖于module2

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

2:有没有办法可以获得推荐状态列表(表示{name: 'state', templateURL: '/someURL'}等状态的对象,并使用module1逻辑确定哪个stateObjects赋予$ stateProvider?

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

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');
});

我可以在完成创建状态后添加“审核”状态吗?

如果我没有考虑其他选项,请告诉我。如果上述任何一种选择可能,请告诉我。

1 个答案:

答案 0 :(得分: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错误,该错误允许您在此时定义缺失状态。假设您可能已在错误回调中定义了它,它将始终再次尝试查找状态。