tôi đã nhà máy sau được xác định:
angular.module("account").factory("users",["$http",
function(a){
return {
getUser: function(){
return a.get("/user/me").then(function(r){
return r.data;
});
}
};
}
]);
Và điều khiển của tôi:
angular.module("test.controllers",["account"])
.controller("TestCtrl",["$scope","users",
function(a,u){
a.user = u.getUser();
console.log(a.user);
}]);
Đây là 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
Trên đây mã đang trả về một đối tượng trạng thái thay vì đối tượng người dùng. Nhưng từ nhật ký, đối tượng trạng thái có đối tượng người dùng trong giá trị. Làm thế nào để tôi có được đối tượng người dùng? Hoặc tôi đang làm điều này hoàn toàn sai?
Tôi biết cách khác là trả lại $ http.get và gọi phương thức then() trong bộ điều khiển. Nhưng tôi sẽ sử dụng đối tượng người dùng thường xuyên và nếu tôi đang gọi phương thức then() trong bộ điều khiển, nó gần giống như sử dụng $ http.get trong bộ điều khiển thay vì nhà máy.
Đối tượng bạn thấy trong console.log là lời hứa được trả về từ cuộc gọi đến .get trong cuộc gọi tới .getUser. Cuộc gọi đến.sau đó tạo ra một lời hứa mới và khi bạn trả lại một cái gì đó từ đó nó sửa đổi dữ liệu được giải quyết cho bất kỳ sau đó. – shaunhusain
kiểm tra câu trả lời này từ tôi từ một bài đăng khác: http://stackoverflow.com/a/38007172/1739949 –