Загрузка дочернего контроллера перед вызовом API родительского контроллера в angularjs
Я использую Angular 1.6, у меня есть одно родительское состояние и дочернее состояние с их соответствующими контроллерами. На моей первой странице входа в систему будут две ссылки, вызывающие родительское и дочернее состояния. Когда меня называют родительским штатом, все работало нормально. Но, вызывая дочернее состояние со страницы входа в систему, в консоли будет какая-то ошибка, такая как 'id' undefined. Я делаю один запрос Restrict API в родительском контроллере. После этого ответа мне нужно загрузить дочерний контроллер? Но когда я вызываю дочернее состояние напрямую, дочерний контроллер загружается до того, как завершается вызов API родительского контроллера. Как решить это?
посмотри на этот поршень.
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';
});
}