在将数据发送到API之前,我需要转换数据
这是在TransformRequest
中完成的config
传递给$http
。
问题是TransformRequest
内的更改也会在我的视图中应用于范围。
这是一个简单的 Plunker ,因此您可以看到它的实际效果。
注意:
当scope.test
不是对象时,这些更改不会应用于视图
例如:scope.test = "2";
或scope.test = 2;
答案 0 :(得分:3)
您正在更改范围内使用的同一对象的ID,因为该对象已传递到tranform方法。
您可以创建对象的副本,修改副本并返回来自变换方法的修改后的副本:
transformRequest : function(data){
var copy = JSON.parse(JSON.stringify(data));
copy.id = null;
return copy;
}
该示例使用JSON de / serialization,当然您也可以使用其他方法。通过JSON de / serialization,您可以创建一个全新的对象,该对象具有相同的内容,但与原始数据对象没有任何共同之处。这是通过将对象转换为JSON字符串来完成的,该字符串保存数据并从该JSON字符串数据重建新对象。
如果使用像“2”这样的非对象,则不会发生这种情况,因为“2”只是一个字符串值而不是对象引用。