我有一個使用偉大的ui路由器的Angular應用程序。Angular UI路由器 - 在父級訪問狀態參數
我的設置是這樣的:
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
// PROJECT DETAIL
.state('project', {
url: '/project/:projectId/',
resolve: {
/* some base api calls */
},
views: {
'task-list': {
templateUrl: 'partials/task_list.tmpl.html',
controller: 'TaskListCtrl',
resolve: {
tasks: function ($stateParams, ConcernService) {
return ConcernService.get('project-tasks/', $stateParams.projectId);
},
}
},
'concern-instance': {
/* some resolved variables */
}
}
})
.state('project.task', {
url: 'task/:taskId/',
views: {
'[email protected]': {
/* some different resolved variables */
},
}
})
這像黃油的所有作品。但是,在task_list
模板中,如果狀態爲project.task
,我希望能夠訪問taskId
param,這樣我可以突出顯示活動的導航鏈接,即使url爲#/project/123/task/456/
,taskId
爲空。我知道這是因爲模板只能訪問爲該狀態聲明的參數。所以如果我想在project.task
狀態下獲得taskId
,我該怎麼做?是否需要重新申報porject.task
中的task-list
?
任何幫助非常感謝。
這是一個惱人的問題。如果您不需要父控制器/模板中的狀態參數,則可以刪除父狀態的url,併爲子狀態聲明完整的URL。如果你這樣做,那麼我想你可以把狀態參數放在一個變量的範圍中,以供孩子們訪問。 – aet
我們遇到了與您描述的相同的問題。您現在可能已經知道了,但實際上您可以通過'$ state.params'獲取所有參數。但是,如果你和我一樣,那麼在你的控制器中以不同的方式獲取你的參數並不適合你。到目前爲止,我在[documentation](https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service/)中發現的最接近的東西描述了父母國家的相反問題param不適用於子狀態。你有沒有想過(通過'$ stateParams')? – Manny
你有沒有想過這個?我也有同樣的問題。 – pankaj