javascript - Angular http 返回 $$state 对象

标签 javascript angularjs angular-services

我定义了以下工厂:

angular.module("account").factory("users",["$http",
    function(a){
      return {
         getUser: function(){
            return a.get("/user/me").then(function(r){
                return r.data;
            });
        }
    };
  }
]);

还有我的 Controller :

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

上面的代码返回一个状态对象而不是用户对象。 但是从日志来看,state对象在value范围内有user对象。我如何获得用户对象?还是我这样做完全错了?

我知道另一种方法是返回 $http.get 并在 Controller 中调用 then() 方法。但是我会经常使用用户对象,如果我在 Controller 中调用 then() 方法,它几乎与在控制​​器而不是工厂中使用 $http.get 相同。

最佳答案

JavaScript I/O 通常是异步的,在这种情况下也是如此。您的 getUser 调用返回一个 $q promise。为了打开它,你必须链接到它,然后这样打开它:

angular.module("test.controllers",["account"])
.controller("TestCtrl",["$scope","users",
    function(a,u){
        u.getUser().then(function(user){
            a.user = user;
            console.log(a.user);
        });
}]);

如果您正在使用路由,您可能还想查看路由中的 resolve 选项。另见 this related question .

关于javascript - Angular http 返回 $$state 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28146491/

相关文章:

javascript - 登录后无法获取和检索用户数据

JavaScript:修改多行输入的内容

javascript - 将数据从 JSON 对象加载到数组中

javascript - 当文本省略号应用于元素时如何使用工具提示?

javascript - ng-lodash : ReferenceError: _ is not defined

angularjs - md 自动完成不起作用

javascript - AngularJS - 公开字符串的服务

javascript - 自定义 Reactjs Checkbox 组件需要动态颜色

javascript - 如何使用javascript或jquery动态创建xml文件并将其设置到上传控件

javascript - Angular JS 中的绑定(bind)问题(嵌套变量)