Вижте приетия отговор на тук за доста добро обяснение на функцията/масива transFormRequest.
В последния пример на отговора:
var transform = function(data){
return $.param(data);
}
$http.post("/foo/bar", requestData, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
transformRequest: transform
}).success(function(responseData) {
//do stuff with response
});
Проблемът с това обаче е, че transformRequest: transform
презаписва масива от функции, които Angular е изградил предварително.
От Angular документи:
За да увеличите или замените глобално трансформациите по подразбиране, променете свойствата $httpProvider.defaults.transformRequest и $httpProvider.defaults.transformResponse. Тези свойства по подразбиране са масив от функции за трансформация, който ви позволява да натиснете или отмените преместването на нова функция за трансформация във веригата за трансформация. Можете също така да решите напълно да замените всички трансформации по подразбиране, като присвоите вашите функции за трансформация на тези свойства директно без обвивката на масива. Тези настройки по подразбиране отново са налични във фабриката $http по време на изпълнение, което може да е полезно, ако имате услуги по време на изпълнение, които искате да участвате във вашите трансформации.
По подобен начин, за да замените локално трансформациите заявка/отговор, увеличете свойствата transformRequest и/или transformResponse на конфигурационния обект, предаден в $http.
Ако исках да приложа моята трансформираща функция глобално, щях да го направя
$httpProvider.defaults.transformRequest.unshift(myFunction)
or
$httpProvider.defaults.transformRequest.push(myFunction)
Моят въпрос
Вместо да изтриете целия масив от функции за заявка за трансформация, как да изпратите друга функция за трансформация към повикване, а не глобално?