访问返回的promise对象数组值

时间:2014-08-19 23:14:44

标签: javascript arrays angularjs

我试图访问从promise对象返回的数组的长度。但是,我没有得到任何运气,因为当我检查数组本身时它返回undefined,并且我尝试访问它所说的无法读取属性的特定元素

来自Chrome控制台

f {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…}
$promise: Object
$resolved: true
address: "1600 amphitheatre way , Mountain View, CA 94043"
address_1: "1600 amphitheatre way "
address_2: "Mountain View, CA 94043"
affiliation_attributes: Array[0]
award_attributes: Array[0]
certification_attributes: Array[0]
description: ""
description_read_more: false
education_attributes: Array[1]
id: 1
lat: "37.422003"
lng: "-122.083978"
name: "Gio Wong"
phone: "650-701-6411"
photos: Array[3]
practice_name: "Super Doctor"
rating: null
rating_url: null
salutation: "DDS"
services: Array[4]
specialty: "Pediatrician"
__proto__: f

我试图访问教育,从属关系,奖励和认证属性。以下代码是我如何打印到控制台以及如何获取promise对象

$scope.provider = Provider.get($routeParams.name);
console.log($scope.provider)

如何访问$ scope.provider.education_attributes.length?甚至是$ scope.provider.education_attributes [0]?两人都归不了财产。

1 个答案:

答案 0 :(得分:4)

提供程序函数返回Angular Promise对象。它不会直接返回您的数据。相反,你为Promise提供了一个在Promise解决后调用的函数。

你应该这样做:

Provider.get($routeParams.name).then(function(resolveData) {
  //access stuff on resolveData here
});

请参阅Angular's $q service的“承诺API”部分。