Загрузка дочернего контроллера перед вызовом API родительского контроллера в angularjs

Я использую Angular 1.6, у меня есть одно родительское состояние и дочернее состояние с их соответствующими контроллерами. На моей первой странице входа в систему будут две ссылки, вызывающие родительское и дочернее состояния. Когда меня называют родительским штатом, все работало нормально. Но, вызывая дочернее состояние со страницы входа в систему, в консоли будет какая-то ошибка, такая как 'id' undefined. Я делаю один запрос Restrict API в родительском контроллере. После этого ответа мне нужно загрузить дочерний контроллер? Но когда я вызываю дочернее состояние напрямую, дочерний контроллер загружается до того, как завершается вызов API родительского контроллера. Как решить это?

посмотри на этот поршень.

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

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
  };     
});

В дочернем контроллере используйте обещание дождаться вызова API:

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

ДЕМО на ПЛНКР

Другие вопросы по тегам