Sie können von Ihrem Controller aus einen Dienst aufrufen, der ein Versprechen zurückgibt, und ihn dann in Ihrem Controller verwenden. Und weiter verwenden $emit
o $broadcast
um andere Kontrolleure darüber zu informieren. In meinem Fall musste ich http-Aufrufe über meinen Dienst tätigen, also tat ich etwas wie dies:
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
})
}
und mein Dienst sieht wie folgt aus
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);
});
}
}])