子控制器在angularjs中的父控制器api调用之前加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子控制器在angularjs中的父控制器api调用之前加载相关的知识,希望对你有一定的参考价值。

我使用角度1.6,我有一个父状态和子状态与他们各自的控制器。在我的第一个登录页面中,将有两个链接调用父状态和子状态。当我被称为父州时,它工作正常。但是从登录页面调用子状态,控制台中会出现一些错误,例如“id”未定义。我在父控制器中发出一个Restangular api请求。在这个响应后,我需要加载子控制器?但是当我直接调用子状态时,子控制器在父控制器api调用完成之前加载。怎么解决这个?

看看这个傻瓜。

https://embed.plnkr.co/aUnHIzuFV7GpiDuKyrwZ/

答案

在父控制器中保存API调用的promise:

$scope.restPromise = Restangular.one('collections')
.get()
.then(function(data){ 
  $state.go("parentstate.childstate");
  $scope.myData = data;
  $scope.params={
  name:"my_name",
  type:"generic",
  data:data
  };     
});

在子控制器中,使用promise等待API调用:

function ChildCtrl($scope) {
  $scope.restPromise.then(function() {
    console.log($scope.params);
    $scope.params.id=5;
    $scope.title = 'Child State';
  });
}

DEMO on PLNKR

以上是关于子控制器在angularjs中的父控制器api调用之前加载的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 从子控制器访问父范围

在ControllerAs AngularJS中调用子函数

js页面的父窗口如何控制关闭window.showModalDialog弹出的子窗口

滑入/滑出子视图控制器在 Swift 中的父视图控制器上部分可见

将子视图控制器链接到情节提要中的父视图控制器

Web API 和 AngularJs