См. принятый ответ на здесь за довольно хорошее объяснение функции/массива 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.
Чтобы глобально дополнить или переопределить преобразования по умолчанию, измените свойства $httpProvider.defaults.transformRequest и $httpProvider.defaults.transformResponse. Эти свойства по умолчанию представляют собой массив функций преобразования, который позволяет вам вставлять или возвращать новую функцию преобразования в цепочку преобразования. Вы также можете полностью переопределить любые преобразования по умолчанию, назначив свои функции преобразования этим свойствам напрямую, без оболочки массива. Эти значения по умолчанию снова доступны в фабрике $http во время выполнения, что может быть полезно, если у вас есть службы времени выполнения, которые вы хотите задействовать в своих преобразованиях.
Точно так же, чтобы локально переопределить преобразования запроса/ответа, дополните свойства transformRequest и/или transformResponse объекта конфигурации, переданного в $http.
Если бы я хотел применить свою функцию преобразования глобально, я бы сделал
$httpProvider.defaults.transformRequest.unshift(myFunction)
or
$httpProvider.defaults.transformRequest.push(myFunction)
Мой вопрос
Вместо того, чтобы стирать весь массив функций запроса преобразования, как добавить другую функцию преобразования в вызов, а не глобально?