【问题标题】:Child Controller loading before Parent controller api call in angularjs在angularjs中调用父控制器api之前加载子控制器
【发布时间】:2017-12-19 13:40:30
【问题描述】:

我使用的是 Angular 1.6,我有一个父状态和一个子状态及其各自的控制器。在我的第一个登录页面中,将有两个链接调用父状态和子状态。当我被称为父母状态时,它工作正常。但是从登录页面调用子状态,控制台会出现'id' undefined这样的错误。我正在父控制器中发出一个 Restangular api 请求。在此响应之后,我需要加载子控制器吗?但是当我直接调用子状态时,子控制器会在父控制器 api 调用完成之前加载。如何解决?

看看这个笨蛋。

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

【问题讨论】:

  • @georgeawg 再次检查 plunker。我改变了api调用。直接调用子状态会导致一些问题。

标签: angularjs angular-ui-router restangular angular-ui-router-extras


【解决方案1】:

在父控制器中保存来自 API 调用的承诺:

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多