Dans ma fonction $ onInit, j'ai deux fonctions qui récupèrent des données. J'utilise la troisième fonction où j'ai besoin des données des deux premiers. La logique que je fais en troisième fonction est ce qui sera rendu à l'écran. Comment utiliser callback dans $ onInit et m'assurer que la troisième fonction n'est pas exécutée avant les deux premiers?
ctrl.$onInit = $onInit;
function $onInit() {
getFood();
getDrinks();
combineFoodAndDrinks();
}
EDIT MON CODE EXEMPLE
var ctrl = this;
ctrl.company = {};
ctrl.company.administrators = [];
ctrl.administrators = [];
ctrl.$onInit = $onInit;
....
function $onInit() {
$q.all([getCompanies(), getAdministrators()]).then(findAdministrators);
getUnasignedAdministrators();
}
function getCompanies() {
companiesService.getCompanies()
.then(function (data) {
var company = data.items.find(function (company) {
if ($stateParams.id === company.id) {
return company;
}
});
ctrl.company.name = company.name;
ctrl.company.contactPerson = {
firstName: company.contactPersonName,
lastName: company.contactPersonLastName,
phone: company.contactPersonPhone
};
})
.catch(function (response) {
responseService.displayError(response);
});
}
function getAdministrators() {
administratorsService.getAdmins()
.then(function (data) {
ctrl.administrators = data.items;
})
.catch(function (response) {
responseService.displayError(response);
});
}
function findAdministrators() {
console.log("getCompanies", ctrl.company);
console.log("getAdministrators", ctrl.administrators);
}
Merci Pankaj. Je l'ai essayé mais je n'arrive toujours pas à le faire fonctionner. J'ai ajouté mon code dans le premier message. Les administrateurs retournent tous les tableaux vides, mais je récupère les entreprises. –