我定义了以下工厂:
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);
}]);
这是console.log:
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相同。