2014-03-25 90 views
0

我使用的Web服務以必須修改的格式返回我的數據,然後才能將其放入我的視圖。在Angular中修改工廠響應

這裏是我的基本工廠:

.factory('myServices', function ($http){ 
    var myServices = {  
     getInfo: function(){ 
      var promise = $http(
       { 
        url: "/deal-details.json", 
        method: "GET"      
       }) 
       .then(function(response) { 
        return response.data; 
       } 
      ); 
      // some logic to modify promise???   
      return promise; 
     } 
    }; 
    return myServices; 
}); 

我的問題是我應該做任何修改返回承諾之前的getInfo()內答應?以前的開發人員正在修改控制器中從myServices.getInfo()返回的值,但這看起來不太合適。

+0

是的,如果它的修改不是特定於視圖的渲染。然後這個地方是在服務[類似](http://stackoverflow.com/a/22617972/2592994) – calebboyd

回答

0

如何使用transformResponse$ http爲您提供?像

$http({ 
    method : 'GET', 
    url : "/deal-details.json", 
    transformResponse : function (response) { 
     // your modification here 
     return response.data; 
    } 
    }); 
+0

這工作。謝謝! –

0

一些它真的只是取決於什麼需要修改的 - 或者,如果它需要每次都被修改或沒有。如果數據需要修改的時間爲100%,那麼最好在服務中進行。

但是,如果需要根據哪個函數調用它進行不同的修改 - 那麼它可能應該在控制器內完成。

@ przno的答案是好的,如果你需要攔截所有$http請求。如果所有承諾都需要修改或以某種方式進行驗證 - 那麼這是一個很好的解決方案!但似乎你的問題是關於特定的服務。

+1

我的直覺告訴我每個人都在說什麼......如果是一般的數據修改,只要使用數據就需要修改,而不是在服務中修改,如果是在控制器中進行一次。 –