Vous pouvez appeler un service à partir de votre contrôleur qui retourne une promesse et ensuite l'utiliser dans votre contrôleur. Et l'utilisation ultérieure $émettent ou $de diffusion pour informer les autres contrôleurs à ce sujet.
Dans mon cas, j'ai dû faire appel http par le biais de mon service, j'ai donc fait quelque chose comme ceci :
function ParentController($scope, testService) {
testService.getList()
.then(function(data){
$scope.list = testService.list;
})
.finally(function(){
$scope.$emit('listFetched');
})
function ChildController($scope, testService){
$scope.$on('listFetched', function(event, data) {
// use the data accordingly
})
}
et mon service ressemble à ceci
app.service('testService',['$http', function($http){
this.list = [];
this.getList = function () {
return $http.get(someUrl)
.then(function (response) {
if (typeof response.data === 'object') {
list = response.data.results;
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function (response) {
// something went wrong
return $q.reject(response.data);
});
}
}])