我已经设置了AngularJS resource
:
app.factory('gridData', function($resource) {
var csrf = 'asdf';
return $resource('/my/url/:expID', {expID:'@id'},{
get: {method:'GET'},
query: {method:'GET', isArray:true},
save:{method:'POST', headers: {'X-CSRFToken' : csrf }}
});
});
我将gridData
资源注入我的控制器并使用它从服务器获取数据:
gridData.query(function(result) {
console.log("result is");
console.log(result);
$scope.data = result;
});
这种方法使用AngularJS 1.3可以正常工作。 console.log(result)
语句打印收到的实际数据。
现在我尝试降级到AngularJS 1.2.11并且我遇到问题,因为console.log(result)
打印出一个承诺,如picture所示。因此$scope.data
设置为promise,但实际上只有在实际数据可用时才需要设置$ scope.data。
这是因为在1.3和1.2之间的某些版本中,Promular已被引入Angular。知道如何处理这种情况/正确处理承诺吗?
答案 0 :(得分:0)
查看标题为" Promise API"在the docs on the $q service。您还可以在Angular承诺上结帐this video。
您需要了解的主要方法是.then
。以下是使用此方法重构代码的方法:
gridData.query(function(promise) {
promise.then(function (result) {
console.log("result is");
console.log(result);
$scope.data = result;
});
});
此示例可能更干净,但它仅用于说明目的。希望有所帮助。