我是AngularJS的新手,所以请保持温和。
我想使用AngularJS的$ resource属性从我的后端检索数据,但似乎在实际调用完成之前该属性已被加载。
目前我有以下代码:
控制器:
MyApp.controller('IndexCtrl', function IndexCtrl($scope, socket, carsRes) {
console.log(carsRes.cars.get());
$scope.cars = carsRes.cars.get();
});
工厂
.factory('carsRes', function($resource) {
var result = {};
result.cars = $resource('/cars/:id', {}, {
'get': {method: 'GET'},
'save': {method: 'POST'},
'query': {method: 'GET', isArray: true},
'remove': {method: 'DELETE'},
'delete': {method: 'DELETE'}
});
return result;
});
但是在我想在$ scope.cars中存储carsRes.cars.get()时,调用还没有完成,而console.log告诉我$ resolved仍然是假的。 / p>
我该如何等待电话解决?我读过有关$ q的内容,但对我来说并不是很清楚。
答案 0 :(得分:6)
这种情况正在发生,因为resource.get()
是异步的。它立即返回一个空引用,然后在ajax调用完成后填充实际数据。
处理结果的最佳方法是使用回调函数:
carsRes.cars.get(function(response){
// We now have a completed ajax call, with the response
$scope.cars = response;
});
请参阅$resource
文档中的更多示例。