Вы делаете это неправильно, попробуйте:
module.service("animalService", function($http) {
return $http.get('animals.json')
});
module.controller("animalController", function($scope, animalService) {
animalService.then(function(res){
$scope.animals = res.data
});
});
любой http
ответ возвращает promise
, и это означает, что данные будут получены asynchronously
. Согласно моему пониманию, использование angular.copy
запускает цикл digest
, поэтому изменения обнаруживаются, но это не совсем хорошая практика. Предпочитаю promise
обработку, как я показал в приведенном выше коде
Обновление:
Поскольку переменная заполняется как promise
и она должна использоваться другими controller
, я бы предложил использовать такие события, как $rootScope.emit
и $rootScope.on
, чтобы controllers
получали уведомление о изменение значения после завершения $http