UI 路由器:是否可以解析子状态中的父承诺
UI-Router: Can I resolve a parent promise in a child state?
我正在开发社交应用程序,它在个人资料页面中有一个封面。"编辑"和"访问"页面都有封面,但子部分不同。问题在于,封面中显示的某些控制器严格取决于您当前访问的部分。
为了解决这个问题,我尝试在父状态的解析部分中返回一个承诺,然后在不同的子状态中解析承诺。
.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
阻止了应用程序。
谁能帮我弄清楚我做错了什么?
最好!
将承诺返回给解析器函数
.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 返回承诺的方式不同,但原理是相同的。将承诺返回到解析器函数。
相关文章:
- 如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
- 处理角度.js承诺错误状态
- 表现出承诺'加载状态
- Javascript-承诺保留为挂起状态
- 将承诺置于待处理状态
- UI 路由器:是否可以解析子状态中的父承诺
- 如何使用Angular检索HTTP状态代码;s$q承诺
- 与承诺状态的角度绑定
- 承诺失败状态
- 当一个函数必须返回承诺时,我如何在一个状态中实现多个解析
- 当页面刷新或深链接时,Angular-ui-router无法实现状态解析的承诺
- Angular UI-Router——在resolve中返回被拒绝的承诺并不能停止状态转换
- 承诺解析哪些状态码
- 承诺数据在路由状态改变时不呈现
- 在承诺解析后修改组件状态
- 共享一个承诺(Redux状态)
- 我是否应该改变一个已承诺并已解决的值的内部状态
- 有没有一种方法可以检查$.when(..)中承诺的个人结果,而不管最终状态如何
- 什么原因导致“;错误:未捕获(承诺中):Url为null的状态为200的响应“”;出现
- 承诺后的角度状态变化