Я пытаюсь получить массив Rest, а затем отображать его на своем HTML. проблема, с которой я столкнулся, заключается в том, что на моей фабрике я могу получить массив и отобразить его содержимое, но не в моем контроллере, где я всегда получаю Undefined var. вот моя фабрикаПочему я получаю var undefined
.factory('coursesService', function($resource) {
var service = {};
service.getAllCouses = function(){
var Courses = $resource("/myproject/rest/training/trainings");
var data = Courses.query().$promise.then(function(data)
{
service.data= data;
console.log("ligne 1: ", service.data[0].name);
console.log("ligne 1: ", service.data[0].creator);
console.log("ligne 2: ", data[1].name);
console.log("ligne 2: ", data[1].creator);
return service.data;
});
}
return service;
})
и мой контроллер
.controller("CoursesController",
function CoursesController($scope, coursesService) {
var courses = {};
courses = coursesService.getAllCouses();
console.log("courses: ", courses);
})
как результат я получаю это:
courses: undefined
ligne 1: Angular
ligne 1: Object {id: "1", username: "User1", email: "[email protected]", password: "password", userProfile: Object}
ligne 2: JavaScript
ligne 2: Object {id: "1", username: "User1", email: "[email protected]", password: "password", userProfile: Object}
Почему я получаю курсы: не определено? и не должен отображаться после списка, который я показываю на заводе?
потому service.getAllCouses() не возвращает ничего? – redbirdo
И потому, что он асинхронный, поэтому данные не доступны во время возврата. Вероятно, вы должны прочитать [этот возможный дублирующий вопрос] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) о возврате данных из асинхронной операции. В этом коде есть что-то не так: большинство из них связано с асинхронным характером операции. – jfriend00
@ jfriend00 да, ссылка iv очень полезна, теперь я получаю возврат от функции. Я обновил завод на основе этого [link] (http://andyshora.com/promises-angularjs-explained-as-cartoon.html). но теперь у меня возникла проблема с обработкой данных, полученных в контроллере, который имеет этот формат 'd {$$ state: Object}' –