EDIT: Bu cevap öncelikle sürüm 1.0.X odaklanmıştır. Karışıklığı önlemek için, 2013-12-05 itibariyle Angular'ın TÜM güncel sürümleri için en iyi yanıtı yansıtacak şekilde değiştirildi.
Fikir, döndürülen verilere bir söz veren bir hizmet oluşturmak, daha sonra bunu denetleyicinizde çağırmak ve $ scope özelliğinizi doldurmak için söz vermeyi işlemek.
Hizmet
module.factory('myService', function($http) {
return {
getFoos: function() {
//return the promise directly.
return $http.get('/foos')
.then(function(result) {
//resolve the promise as the data
return result.data;
});
}
}
});
Kontrol eden, denetleyici:
Sözün then()
yöntemini ele alın ve verileri bundan çıkarın. $ Scope özelliğini ayarlayın ve yapmanız gerekeni yapın.
module.controller('MyCtrl', function($scope, myService) {
myService.getFoos().then(function(foos) {
$scope.foos = foos;
});
});
Görüntüleme İçi Vaat Çözünürlüğü (yalnızca 1.0.X):
Buradaki orijinal cevabın hedefi Angular 1.0.X'te, View tarafından özel muamele göreceğine söz veriyor. Çözüldüklerinde, çözümlenen değerleri görünüme bağlanır. 1.2.X sürümünde kullanımdan kaldırıldı
module.controller('MyCtrl', function($scope, myService) {
// now you can just call it and stick it in a $scope property.
// it will update the view when it resolves.
$scope.foos = myService.getFoos();
});