gpt4 book ai didi

angularjs - 如何动态更改 ui-router 使用的默认状态?

转载 作者:行者123 更新时间:2023-12-03 17:48:38 27 4
gpt4 key购买 nike

我有一个应用程序应该根据一些 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'
});

然后我希望基于 OrderResolve 对象中的值默认为 2 个状态中的 1 个。基本上,我使用 resolve获取告诉我此用户是否已激活 SharePoint 服务的 API 数据。如果 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');
}

关于angularjs - 如何动态更改 ui-router 使用的默认状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com