我正在获取ajax请求数据并分配给一个范围变量
$scope.customerEvents = data;
然后我使用另一个变量来修改数据
var datanew=data;
datanew.unshift({'customer_events_id': 'ID','date':'Date','event':'Event','eventsubtype':'Event Subtype','eventtype':'Event Type','time':'Time','user_id':'User ID','user_mrn':'User MRN','user_name':'User Name','user_role':'User Role'});
$scope.downloadcsv=datanew;
但是,customerEvents正在更新。
答案 0 :(得分:3)
你应该使用:
$scope.customerEvents = angular.copy(data);
创建源的深层副本,该副本应该是对象或数组。
答案 1 :(得分:0)
当然,customerEvents和datanew可能都引用同一个对象(由'data'引用)。将数组复制到datanew时克隆数组,并且您将仅修改 datanew,最后是$ scope.downloadcsv和不 customerEvents。
将var datanew=data;
更改为var datanew=data.slice()
;
答案 2 :(得分:0)
除非第一个变量引用它,否则你必须对对象进行深层复制。 你可以使用:
angular.copy(数据)
angular.merge(dst,src):documentation。
您也可以参考这篇文章:Deep copying objects in angular?