angularjs – Angular UI路由器 – 父级中的访问状态参数
发布时间:2020-12-17 07:46:59 所属栏目:安全 来源:网络整理
导读:我有一个Angular应用程序使用伟大的ui路由器. 我的设置看起来像: .config( function ($stateProvider,$urlRouterProvider) { $stateProvider // PROJECT DETAIL .state('project',{ url: '/project/:projectId/',resolve: { /* some base api calls */ },vi
我有一个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: { 'concern-instance@': { /* some different resolved variables */ },} }) 这一切都像黄油一样工作.但是在我的task_list模板中,在状态project.task中,我想要能够访问taskId参数,所以我可以突出显示活动的导航链接,即使url是#/ project / 123 / task / 456 / taskId是空的.我明白这是因为模板只能访问为该状态声明的参数.所以如果我想在project.task状态下获取taskId,该怎么办?我需要在porject.task中重新声明任务列表吗? 任何帮助非常感谢.
在UI-Router文档
here中,他们解释说
您只能使用父级的resolve属性访问子状态中的父状态参数. 把它放在你的’项目’状态(父): ... resolve: { // Expose projectId parameter to child states projectId: ['$stateParams',function ($stateParams) { return $stateParams.projectId; }] }, 然后在您的控制器内为您的状态“project.task”(子),您应该可以访问这两个 $stateParams.projectId 和 $stateParams.taskId (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |