2014-09-04 128 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