我对嵌套路线有挑战,在角度js中,这是app.js中的片段
...
when('/profile/:id', {
templateUrl: 'partials/profile',
controller: 'profileCtrl'
}).
when('/profile/:id/editTaskList', {
templateUrl: 'partials/editTaskList',
controller: 'checkListCtrl',
activeMenu: 'editTaskList'
}).
...
我想要在“/ profile /:id”下的每一条路线中访问“个人资料数据”。
“个人资料数据”示例为:
{
user: "demo",
title: "dev"
}
它来自基于路径中的ID的AJAX(JSON)
现在设置的方式是获取用户个人资料的服务,并在“ profileCtrl ”中为个人资料ID提出服务请求。
我遇到的问题是,如果有人共享网址并立即转到“/ profile /:id / editTaskList”,则“profileCtrl”不会触发。
我不认为通过在“checkListCtrl”中添加服务请求是一个好习惯,因为我在“profile”下会有更多的嵌套路由,并且需要在多个控制器中复制代码。 /强>
解决此问题的最佳做法是什么?如果我可以在“/ profile /:id”或更低的时候点击“profileCtrl”,对我来说也会工作
答案 0 :(得分:0)
您可以在初始化控制器之前获取数据
...
when('/profile/:id', {
templateUrl: 'partials/profile',
controller: 'profileCtrl',
resolve: {
profile: ['ProfileService','$route', function (ProfileService,$route) {
return ProfileService.getProfile($route.current.params.id);
}]
},
}).
when('/profile/:id/editTaskList', {
templateUrl: 'partials/editTaskList',
controller: 'checkListCtrl',
resolve: {
profile: ['ProfileService','$route', function (ProfileService,$route) {
return ProfileService.getProfile($route.current.params.id);
}]
},
activeMenu: 'editTaskList'
}).
...
控制器将
function myCtrl($scope,profile){
// now profile is your data
}