所以我的结构是这样的。
相关州代码:
resolve:{
projectPromise: ['$stateParams', 'projects', 'session', function($stateParams, projects, session){
projects.getProject($stateParams.id).success(function(data){
session.currentProject = data;
});
}]
}
获取项目:
o.getProject = function(project_id, container){
return $http.get('/project/' + project_id);
};
相关 Controller 内部:
$scope.currentProject = session.currentProject;
以及相关模板的内部:
{{currentProject.title}}
当我第一次导航到/projects/:projectid 时,它会显示正确项目的标题。但是,如果我返回并导航到一个新项目,它仍然显示第一个项目的标题。然后当我刷新时它会显示正确的标题。如果我之后继续刷新,有时标题根本不会出现。我确信我的很多问题源于没有很好地理解如何构建所有这些,比如到底在哪里调用 getProject 以及 getProject 是否应该将 $http.get 请求的结果存储在作为传递的容器中参数或像我现在一样返回。如有任何建议,我们将不胜感激,谢谢!
最佳答案
您需要从resolve
函数返回promise,否则Angular将导航到promise解决之前的状态:
resolve:{
projectPromise: ['$stateParams', 'projects', 'session', function($stateParams, projects, session){
// Add `return` statement here:
return projects.getProject($stateParams.id).success(function(data){
session.currentProject = data;
});
}]
}
关于javascript - ui-router 解析在第一次加载时显示先前的解析结果,有时在重新加载时根本不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564956/