Мой вопрос основан на в этом разделе в группе Angular Google.
Я хочу предоставить службу, которая хранит некоторые базовые данные, извлеченные из бэкэнд через $http, тогда мне нужно только один раз получить эти данные. например,
var load = function() {
return $http.get(...).then(function(data) {
return data.user;
});
};
module.factory("userProvider", function() {
var user;
var getUser = function() {
if(!user) {
load().then(function(data) {
user = data;
});
}
return user;
};
return {
getUser : getUser
}
});
module.controller("UserController", ["userProvider", function UserController("userProvider") {
var user = userProvider.getUser();
// do something with user
}]);
Проблема в том, что цепочка обещаний заканчивается в userProvider, но не в контроллере, поэтому пользователь undefined при первом использовании этого контроллера, поскольку данные не были возвращены.
Как я могу использовать такую службу хранения и правильно вернуть данные? Спасибо!