如何创建一个返回使用$ http

时间:2015-06-07 11:47:59

标签: javascript angularjs angular-http

我的代码是:

$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中的一个函数内完成所有操作。

1 个答案:

答案 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进行调查。