2013-07-27 19 views
1

當我在AngularJS應用程序中實例化下面的代碼時,我在transformResponse函數(代碼底部)中得到了奇怪的數據。我沒有從任何控制器調用$ resource函數,只是在瀏覽器中加載腳本。當加載應用程序時,數據變量(請參閱代碼)包含當前部分的HTML

這看起來很奇怪。這是它應該的方式嗎?

var buddyServices = angular 
.module('buddyServices', ['ng','ngResource']) 
.factory('Buddy', 
    function ($resource) { console.log('resource'); 
     return $resource('http://webservice.buddyplatform.com/v1/:service', 
      {service:'', BuddyApplicationName: 'xxx', 
      BuddyApplicationPassword: 'yyy'} 
     ); 
    } 
) 
.config(function($httpProvider){ 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    $httpProvider.defaults.transformResponse = function(data) { 
     console.log(data); 
     return 'TEST: '+data; 
    }; 
}); 

===編輯===

這對我只是嚇倒:$ httpProvider處理所有 http請求,所以頁面加載是其中之一。我現在猜測了一下,但似乎很可能。那麼,問題就變成了:是否有一種「簡單」的方法來將上述代碼中的數據限制爲僅由我的服務執行的請求?

回答

1

transformResponse需要另一個參數headersGetter。您可以使用它來獲取標題與響應一起發送。尋找Content-Type標題標題。它應該包含application/json

+0

雖然我沒有在標題之後。我在響應*數據*之後。在某些情況下,我希望能夠保持原樣。我只想在我打電話給我的功能時發生這種情況。 –

+0

頭部Content-type可用於區分html內容,json內容或xml內容。如果服務調用正在返回json數據或xml數據,則可以很好地爲內容類型設置一個過濾器,因爲html partials會返回content-type text/html – Chandermani