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

时间:2015-07-31 11:09:58

标签: angularjs

在将数据发送到API之前,我需要转换数据 这是在TransformRequest中完成的config传递给$http

问题是TransformRequest内的更改也会在我的视图中应用于范围。

这是一个简单的 Plunker ,因此您可以看到它的实际效果。

注意:

scope.test不是对象时,这些更改不会应用于视图 例如:scope.test = "2";scope.test = 2;

1 个答案:

答案 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”只是一个字符串值而不是对象引用。