我的代码是:
$rootScope.getResource = function(id) {
$http.get( "path/of/resource/" + id )
.success(function (data, status, header, config) {
return data;
})
.error(function (data, status, header, config) {
console.log("Error");
});
但它总是返回'undefined'。
我知道问题是$ http函数是异步的,我应该使用promises,但我无法弄清楚如何在$ rootScope中的一个函数内完成所有操作。
答案 0 :(得分:0)
您应该通过回调返回数据。
$rootScope.getResource = function(id, callback) {
var cb = callback || angular.noop;
$http.get( "path/of/resource/" + id )
.success(function (data, status, header, config) {
return cb(data);
})
.error(function (data, status, header, config) {
console.log("Error");
return cb('error');
});
然后,使用更新的getResource
函数
$scope.assignReturnedData = $rootScope.getResource(15, function(data) {
$scope.yourVariable = data;
});
你可以从这个工作plunker获得想法。
一方面注意,我不鼓励您使用$rootScope
获取数据,而应该使用angular service进行调查。