所以我正在为我的应用程序探索不同的配置选项。我的主要目标是找到一种方法来配置最高级别的状态/路由,即使相关的角度模块声明了自己的路由/状态。我有几个选择,但我不确定它们是否可能:
假设我有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');
});
我可以在完成创建状态后添加“审核”状态吗?
如果我没有考虑其他选项,请告诉我。如果上述任何一种选择可能,请告诉我。
答案 0 :(得分:3)
听起来您的主要目标是跨模块定义状态以及延迟加载状态。有一些现有功能可以实现这些功能。
您需要使用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错误,该错误允许您在此时定义缺失状态。假设您可能已在错误回调中定义了它,它将始终再次尝试查找状态。