我想要獲得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非常有幫助,我現在正在從函數返回。我根據這個[鏈接]更新了工廠(http://andyshora.com/promises-angularjs-explained-as-cartoon.html)。但是我現在面臨的一個問題是如何處理控制器中接收到的數據,格式爲'd {$$ state:Object}' –