我正在使用$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
那么如何从对象中访问
答案 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;
});
我再次建议阅读角度文档以便更好地理解。