如何访问返回的 json 对象的属性?(AngularJS)



>我正在尝试对Facebook进行api调用(使用angularJs。这是我的代码(取自服务):

fbTest: function (name) {
    resource = $resource('http://graph.facebook.com/:id?fields=id,name,picture', { id: '@id' });
    return resource.get({ id: name });
}

它返回数据很好:(用小提琴手检查)

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,但这不会返回任何内容。

发生这种情况是因为返回函数时 get 的结果尚未准备就绪。您正在返回promise .

尝试将$resource.get绑定到$scope中的某个属性,准备就绪后,它将正确显示。

文档对我来说

有点不清楚,但似乎一些公开的方法(例如.get异步执行)。 这意味着来自.get的返回值实际上可能并不从HTTP返回数据。

相反,您需要执行以下操作:

resource.get({ id: name }, function (data) {
    // do something with data.name, etc.
});

最新更新