我正在尝试对facebook进行api调用(使用angularJs。 这是我的代码(取自服务):
fbTest: function (name) {
resource = $resource('http://graph.facebook.com/:id?fields=id,name,picture', { id: '@id' });
return resource.get({ id: name });
}
它返回数据就好了:(用Fiddler检查)
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Type: application/json; charset=UTF-8
ETag: "c49e5dcad5a864ff2e16bb3af547231f725c05e7"
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
X-FB-Rev: 1002313
X-FB-Debug: tMeW4nnfiRBj6VK+QRtbe0YdaGfQfkXcaWL4VzXTXxw=
Date: Mon, 11 Nov 2013 16:53:29 GMT
Connection: keep-alive
Content-Length: 241
{
"id": "Data",
"name": "Data",
"picture": {
"data": {
"url": "Data",
"is_silhouette": false
}
}
}
但是如何访问属性? 我尝试写.name,但这不会返回任何内容。
答案 0 :(得分:1)
The documentation对我来说有点不清楚,但似乎某些公开的方法(例如.get
)异步执行。这意味着.get
的返回值实际上可能不会从HTTP返回数据。
相反,您需要执行以下操作:
resource.get({ id: name }, function (data) {
// do something with data.name, etc.
});
答案 1 :(得分:1)
发生这种情况是因为返回函数时get的结果尚未就绪。您将返回promise
。
尝试将$resource.get
绑定到$scope
中的某个属性,并在准备好后正确显示。