所以我的结构是这样的。
相关州代码:
resolve:{
projectPromise: ['$stateParams', 'projects', 'session', function($stateParams, projects, session){
projects.getProject($stateParams.id).success(function(data){
session.currentProject = data;
});
}]
}
getProject:
o.getProject = function(project_id, container){
return $http.get('/project/' + project_id);
};
相关控制器内部:
$scope.currentProject = session.currentProject;
在相关模板中:
{{currentProject.title}}
当我第一次导航到/ projects /:projectid时,它会显示正确项目的标题。但是,如果我返回并导航到新项目,它仍会显示第一个项目的标题。然后,当我刷新它显示正确的标题。如果我在此之后继续刷新,有时标题根本不会出现。我确定我的很多问题都源于对如何构建所有这些内容没有很好的理解,比如在什么地方调用getProject以及getProject是否应该将$ http.get请求的结果存储在传递的容器中作为参数或只是像我现在一样返回。任何建议都表示赞赏,谢谢!
答案 0 :(得分:3)
您需要从resolve
函数返回承诺,否则Angular将导航到承诺解决之前的状态:
resolve:{
projectPromise: ['$stateParams', 'projects', 'session', function($stateParams, projects, session){
// Add `return` statement here:
return projects.getProject($stateParams.id).success(function(data){
session.currentProject = data;
});
}]
}