2015-12-19 78 views
2

我试图访问我的资源数组的特定位置,来自查询,但在我的console.log它没有出现。获取资源数组手动元素返回任何东西

$scope.a = []; 
var resourceGet = $resource('myurl'); 
$scope.a = resourceGet.query(function(data){ 
     return data; 
}, function(error){ 
     console.log(error); 
}); 
console.log($scope.a[1]); 

控制台上没有任何东西。 但是,我可以使用ng-repeat显示$ scope.a。

我在做什么错了?

+1

该数据不可立即使用。在console.log($ scope.a [1])期间,查询可能没有返回数据,因此控制台中没有显示任何内容。 – chaoticmind

回答

3

这是因为你正在处理异步数据。您的console.log在您给query的回调之前执行,此时数据尚未加载。你写的代码(回调除外)是同步的。

编辑:这里有一个简单的数据加载示例$http。我建议使用$http来执行简单的任务,因为$resource更多的是关于CRUD操作。我个人从未使用过$resource

http://codepen.io/anon/pen/zrqbxj?editors=101

+0

请求后立即更改/编辑/访问获取请求中包含的数据的最佳方式是什么?使用$ http? –

+0

您可以在有'返回数据'声明的块中更改/编辑/访问。因为它是传入数据实际可用的地方。 resourceGet.query(function(data){$ scope.a = data},function(error){});应该工作。 – chaoticmind