0
У меня есть Service
и Controller
. Контроллер вызывает функцию, getItems()
на Service
. Service
возвращает array
данных.Контроллер не запрашивает служебные данные
Однако контроллер, похоже, не получает этого, как ни странно.
Контроллер:
ItemModule.controller('ItemController', ['$scope', 'ItemService',
function ($scope, ItemService) {
$scope.items = [];
$scope.getItems = function() {
$scope.items = ItemService.getItems();
}
$scope.getItems();
}
]);
Услуги:
ItemModule.service('ItemService', ['$rootScope', '$http',
function($rootScope, $http) {
this.getItems = function() {
$http.get($rootScope.root + '/products').success(function(data) {
// This prints it out fine to the console
console.log(data);
return data;
});
}
}
]);
Что я делаю неправильно?
'$ http.get' является асинхронным, а' success' является обратным вызовом. 'return'ing от этого неверно (не делает того, что вы ожидаете от него). Пожалуйста, прочтите следующее: http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call#answer-14220323 –
На данный момент ваша проблема будет решена путем возврата обещания HTTP , то есть: 'return $ http.get (... существующий код без изменений ...)' –
также не возвращает объект, который вы создаете в службе, поэтому, когда вызывается 'ItemService.getItems();' должен видеть ошибку, не определено – charlietfl