【发布时间】:2015-03-24 15:38:32
【问题描述】:
我定义了以下工厂:
angular.module("account").factory("users",["$http",
function(a){
return {
getUser: function(){
return a.get("/user/me").then(function(r){
return r.data;
});
}
};
}
]);
还有我的控制器:
angular.module("test.controllers",["account"])
.controller("TestCtrl",["$scope","users",
function(a,u){
a.user = u.getUser();
console.log(a.user);
}]);
这是控制台日志:
d {$$state: Object, then: function, catch: function, finally: function} $$state: Object status: 1 value: Object user: Object__v: 0 _id: "54c1fg29f36e117332000005" temp: "1ce3793175e0b2548fb9918385c2de09" __proto__: Object __proto__: Object __proto__: Object __proto__: Object
上面的代码返回一个状态对象而不是用户对象。 但是从日志来看,状态对象的值是用户对象。我如何获取用户对象?还是我这样做完全错了?
我知道另一种方法是返回 $http.get 并在控制器中调用 then() 方法。但是我会经常使用用户对象,如果我在控制器中调用 then() 方法,它几乎与在控制器中使用 $http.get 而不是工厂相同。
【问题讨论】:
-
您在console.log 中看到的对象是您在调用.getUser 时调用.get 返回的promise。对 .then 的调用会创建一个新的 Promise,当您从那里返回某些内容时,它会修改为任何后续 then 解析的数据。
-
从另一个帖子中查看我的答案:stackoverflow.com/a/38007172/1739949
标签: javascript angularjs angular-services