gpt4 book ai didi

Angularjs UI 路由器 : Incorrectly interpreting url path as paremeter in $urlRouterProvider

转载 作者:行者123 更新时间:2023-12-01 14:18:59 24 4
gpt4 key购买 nike

我的 $stateProvider 中有以下设置:

$stateProvider
.state('main.newworkspace', {
url: "/workspace/new",
templateUrl: "views/main/newworkspace.html",
controller: "NewWorkspaceCtrl"
})
.state('main.workspace', {
url: "/workspace/:id",
templateUrl: "views/main/workspace/main.html",
controller: "WorkspaceCtrl",
abstract: true
})
.state('main.workspace.dashboard', {
url: "/dashboard",
templateUrl: "views/main/workspace/dashboard.html",
controller: "DashboardCtrl"
})
.state('main.workspace.info', {
url: "/info",
templateUrl: "views/main/workspace/info.html",
controller: "InfoCtrl"
})

此应用现已启用以下路由:

/workspace/new
/workspace/:id
/workspace/:id/dashboard
/workspace/:id/info

因为 /workspace/:id 是抽象的,我希望它自动重定向到 /workspace/:id/dashboard。我试图通过向 $UrlRouterProvider 添加一个 when() 来实现这一点:

$urlRouterProvider.when('/workspace/:id', '/workspace/:id/dashboard');

所以现在它正确地重定向

/workspace/:id ------> /workspace/:id/dashboard

而且还会重定向 /workspace/new

/workspace/new ------> /workspace/new/dashboard

有没有快速解决这个问题的方法?我也尝试确定 $stateParam.id == 'new'$urlRouterProvider.when(...) 函数调用中,但 $stateParam 和 $state.params总是空的。

最佳答案

我们应该能够以类似的方式赋予特殊路由优先级:

// when for the NEW state... will be matching first - and used
$urlRouterProvider.when('/workspace/new'
, function($state){$state.go('main.newworkspace');})
// other 'when' as needed...
$urlRouterProvider.when('/workspace/:id', '/workspace/:id/dashboard');

第一个重选的 .when() 将获胜......

关于Angularjs UI 路由器 : Incorrectly interpreting url path as paremeter in $urlRouterProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26389177/

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