http配置中的转换请求正在改变范围



我需要在将数据发送到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"只是一个字符串值,而不是对象引用。

最新更新