有关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 工厂中可用,如果您希望在转换中涉及运行时服务,这可能会很有用。
类似地,要在本地覆盖请求/响应转换,请增加传递到 $http 的配置对象的 transformRequest 和/或 transformResponse 属性。
如果我想在全球范围内应用我的变换功能,我会这样做
$httpProvider.defaults.transformRequest.unshift(myFunction)
或者
$httpProvider.defaults.transformRequest.push(myFunction)
我的问题
不是擦除整个转换请求函数数组,而是如何将另一个转换函数推送到调用,而不是全局?