Moje pytanie jest oparte na this topic w Angular Google group.
Chcę zapewnić usługę, która przechowuje podstawowe dane pobrane z backendu za pomocą $ http, a następnie wystarczy pobrać te dane tylko raz. jak,Użyj obietnicy i usługi razem w Angular
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
}]);
Problem polega na tym, że łańcuch obietnica kończy się userProvider ale nie w sterowniku, dzięki czemu użytkownik jest niezdefiniowana po raz pierwszy używam tego kontrolera, ponieważ dane nie zostały zwrócone.
Jak mogę korzystać z takiej usługi pamięci masowej i poprawnie zwracać dane? Dzięki!
Dzięki Josh, to działa! – Edward
Działa świetnie. Jedyne, czego może brakować, to coś, co zapobiega dodatkowym zewnętrznym połączeniom, podczas gdy pierwsze połączenie pobiera dane. – keyser