Mat*_*zke 5 angularjs angular-ui-router
我有一个应用程序应该根据一些API数据服务于不同的状态.如果我的应用程序的状态配置如下所示:
$stateProvider.state('order', {
url: '/order/{serviceId}',
controller: 'OrderController',
abstract: true,
resolve: {
OrderResolve: function(Order, $stateParams){
return Order.fetch($stateParams.serviceId);
}
}
}).state('order.sharepoint', {
url: '/sharepoint',
abstract: true,
controller: 'SharePointController'
}).state('order.sharepoint.index', {
url:'',
controller: 'SharePointServiceController'
}).state('order.sharepoint.setup', {
url:'',
controller: 'SharePointSetupController'
}).state('order.sharepoint.confirm', {
url:'',
controller: 'SharePointConfirmController'
});
Run Code Online (Sandbox Code Playgroud)
然后我希望默认2个状态中的1个基于OrderResolve对象中的值.基本上,我使用resolve获取API数据来告诉我此用户是否已激活SharePoint服务.如果OrderResolve.hasSharepoint == true那时我想默认为order.sharepoint.index状态,但如果OrderResolve.hasSharepoint == false那时我想默认为order.sharepoint.setup状态.第一个状态显示SharePoint数据,第二个状态只是"设置"Sharepoint服务的表单.
有没有一种简单的方法来实现这种功能?
你需要一个中间状态,而且你已经拥有了。如果您abstract: true,从该状态中删除order.sharepoint并始终进入该状态,则无论您的OrderResolve解析值如何。
然后,在 SharePointController 中,您可以访问OrderResolve并决定您的目标状态:
// inside SharePointController
if (OrderResolve.hasSharepoint == true){
$state.go('order.sharepoint.index');
else {
$state.go('order.sharepoint.setup');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |