我正在开发社交应用程序,该应用程序在个人资料页面中有封面。 “编辑”和“访问”页面都有封面,但有不同的子部分。 问题是封面上显示的某些控制器严格取决于您当前访问的部分。
要解决此问题,我正在尝试在父状态的resolve部分中返回一个promise,然后在不同的子状态中解析promise。
.state('profile', {
url: '/profile',
controller: 'ProfileController',
templateUrl: 'components/profile/profile.html',
resolve: {
actor: function(UserService){
return UserService.getUser();
},
target: function($q){
var deferred = $q.defer();
return deferred.promise;
}
}
})
.state('profile.view', {
url: '/:userId',
templateUrl: 'components/profile/view.html',
navbar: true,
parent: 'profile',
resolve: {
/**
*
* @param target
* @param {UserService} UserService
*/
target: function(target, UserService){
target.resolve(UserService.getActions('view'));
}
}
})
不幸的是,我的逻辑出现了问题,因为配置文件状态中的return deferred.promise
阻止了应用程序。
有谁可以帮我弄清楚我做错了什么?
最佳!
答案 0 :(得分:0)
返回对解析程序函数的承诺
.state('profile.view', {
url: '/:userId',
templateUrl: 'components/profile/view.html',
navbar: true,
parent: 'profile',
resolve: {
/**
*
* @param target
* @param {UserService} UserService
*/
target: function(target, UserService){
return UserService.getActions('view').$promise;
}
}
})
此答案假定UserService
是$resource
个查询。其他API以不同的方式返回承诺,但原则是相同的。 返回对解析器功能的承诺。