当我更新另一个范围变量

时间:2016-05-10 06:18:36

标签: javascript angularjs

我正在获取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正在更新。

3 个答案:

答案 0 :(得分:3)

你应该使用:

$scope.customerEvents = angular.copy(data);

创建源的深层副本,该副本应该是对象或数组。

那是documentation

您也可以查看以下问题:Javascript equivalent of assign by reference?

答案 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

  • 或者您可以使用jquery.clone()

您也可以参考这篇文章:Deep copying objects in angular?