无法访问对象的属性

时间:2016-07-18 11:29:20

标签: angularjs angular-resource angular-services

我正在使用$resource向服务器发出restful请求。 我的代码是

service.js

.factory('userServ',function($resource){
   return $resource('url/:id',{id:'@id'},{
          me: 'GET',isArray:false,url:'url2'}
});
})

我在控制器中使用此服务

$scope.userDetails = userService.me();
console.log($scope.userDetails) // gives all the details of the user
console.log($scope.userDetails.username) // gives undefined. But username is there in the object

那么如何从对象中访问

2 个答案:

答案 0 :(得分:0)

在你的行为中,承诺没有得到解决。所以你无法获取数据。 这里,

  $scope.userDetails = userService.me(); 


    承诺没有得到解决。展开对象时,您会看到resolved:false。虽然您可以在$scope.userDetails内查看所需的数据。

所以,首先你需要等到承诺得到解决。为此你可以使用.then方法。

var CallApi = userService.me().$promise;  //Promise yet to be Resolved
       CallApi.then(function (res)){           //Promise resolved here
        $scope.userDetails = res;
        console.log($scope.userDetails)
        console.log($scope.userDetails.username)
      }
     })

答案 1 :(得分:0)

您的资源对象返回一个承诺。在此处阅读更多相关信息:https://docs.angularjs.org/api/ngResource/service/$resource

var myResource = $resource('url/:id',{id:'@id'},{
      me: 'GET',isArray:false,url:'url2'}
});

为了从中获取数据,您需要调用promise本身的方法。他们是GET,PUT和SAVE。

但是在这里你只提到了GET。

因此,如果您通过致电

解决了您的承诺
var myResult = [];
myResource.then(function(data){
    myresult = date;
});

现在,' myResult'这里有你的返回数据。

它也可以像这样():

调用
.get({userId:123})
.$promise.then(function(user) {
  $scope.user = user;
});

我再次建议阅读角度文档以便更好地理解。