javascript - ui-router 解析在第一次加载时显示先前的解析结果,有时在重新加载时根本不显示

标签 javascript angularjs angular-ui-router angular-promise

所以我的结构是这样的。

相关州代码:

       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/

相关文章:

angularjs - 使用 ui-router 动态 View 名称

angularjs - UI 路由器条件 ui View ?

javascript - 如何区分内联链接和独立链接

javascript - 使用ajax将值从javascript传递到python

javascript - 使用 Javascript 解析 XML(在 Google Scripts 中)

javascript - 从隔离范围指令中的更改更改 Controller 变量值

javascript - 如果 ng-if 的计算结果为 false,AngularJS 我的模型数据会变得无效吗?

javascript - 如何找到嵌套在 JSON 中的列的最大值?

javascript - 使用angularjs获取动态创建的表行值的值

css - 溢出 : scroll on ui-router ui-view