EDIT: Ця відповідь в основному була зосереджена на версії 1.0.X. Щоб запобігти плутанині, її змінено, щоб відобразити найкращу відповідь на ВСІ поточні версії Angular на сьогодні, 2013-12-05.
Ідея полягає у створенні сервісу, який повертає обіцянку повернутим даним, а потім зателефонуйте до цього у свій контролер та обробіть там обіцянку для заповнення вашого $ властивості.
Сервіс
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;
});
}
}
});
Контролер:
Обробіть then()метод обіцянки та вийміть із нього дані. Встановіть властивість $ range і зробіть все, що вам може знадобитися.
module.controller('MyCtrl', function($scope, myService) {
myService.getFoos().then(function(foos) {
$scope.foos = foos;
});
});
Роздільна здатність щодо перегляду (лише 1.0.X):
У Angular 1.0.X, ціль оригінальної відповіді тут, обіцянки отримають спеціальну обробку з боку Вид. Коли вони вирішаться, їх розв’язане значення буде прив’язане до подання. Це було знято в 1.2.X
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();
});