我的问题基于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
}]);
问题是promise链在userProvider中结束,而不是在控制器中,所以我第一次使用这个控制器时用户是未定义的,因为数据还没有返回。
如何使用这样的存储服务并正确返回数据?谢谢!