2014-09-04 119 views
1

我猜$http.get部分不工作。 这是我的代码:

.controller('home', function($scope, request){ 
      $scope.list = request.get(baseUrl); 
    }) 
.factory('request', function($http){ 
     var get = function(url){ 
      $http.get(url).success(function(data){ 
       console.log(data); 
       return data; //returns nothing 
      }); 
     } 

     return { 
      get : get 
     } 
    }); 
+0

这样定义'函数成功的回调函数(数据,状态,头文件,配置)'然后打印每个参数到控制台并让我们知道输出 – bmleite 2014-09-04 16:53:31

+0

@bmleite成功函数实际上不执行我的意思是$ http.get不工作 – pyprism 2014-09-04 16:59:05

+0

为什么你说“ $ http.get不工作“?你看到在控制台中的任何错误? – bmleite 2014-09-04 17:05:12

回答

1

一般来说,你的函数不返回任何东西 - 如果我是叫request.GET中(),它会返回undefined。你要像

.controller('home', function($scope, request){ 
    request.get(baseUrl).then(function(data){ // I prefer then and catch semantics 
     $scope.list = data;     // as they're standard promises form 
    })['catch'](function (err){console.log(err)}); 
}) 
.factory('request', function($http){ 
    var get = function(url){ 
     return $http.get(url).then(function(data){ 
      console.log(data); 
      return data; 
     }); 
    } 
    return { 
     get : get 
    } 
}); 

虽然这是一个简单的情况下不必要的混淆(我只是把$http.get().then().catch()东西控制器,而不是工厂。

3

试试这个。

.factory('request', function($http){ 
    var get = function(url){ 
     return $http.get(url).success(function(data){ 
      return data; 
     }); 
    } 

    return { 
     get : get 
    } 
}); 

更新您的控制器。

request.get(url).then(function (data) { 

    $scope.data = data; 

}, function (response) { 
    // handle error 
}); 

http://plnkr.co/edit/eWXckgiwPNCGMlP0LQyk?p=preview

+0

控制器也是错误的: 'request.get(baseUrl).then(function(data){$ scope.list = data});' 你在重击中做了什么,我想我应该先看看那个第一个...对不起。 – marneborn 2014-09-04 18:29:11