我需要在将数据发送到API之前对其进行转换。
这是在TransformRequest
中完成的,config
被传递到$http
。
问题是在TransformRequest
内部所做的更改在我看来也适用于范围
这是一个简单的Plunker,所以你可以看到它的作用。
说明:
当scope.test
不是对象时,这些更改不会应用于视图。
例:scope.test = "2";
或scope.test = 2;
您正在更改作用域中使用的同一对象的id,因为该对象被传递到转换方法中。
您可以创建对象的副本,修改副本并从转换方法返回修改后的副本:
transformRequest : function(data){
var copy = JSON.parse(JSON.stringify(data));
copy.id = null;
return copy;
}
示例使用JSON反/序列化,当然您也可以使用其他方法。通过JSON反/序列化,您可以创建一个具有相同内容的全新对象,但在其他方面与原始数据对象没有任何共同之处。这是通过将对象转换为包含数据的JSON字符串并从该JSON字符串数据重建新对象来完成的。
如果你使用像"2"这样的非对象,这可能不会发生,因为"2"只是一个字符串值,而不是对象引用。