Angular $ scope变量自行更新

时间:2017-05-29 16:49:14

标签: javascript angularjs

我有两个变量。但更新1会导致另一个更新。任何人都可以解释这里发生了什么?

$scope.pages = [];
$scope.pagesSave = [];

var functionName = function(){

  $service.doThing1().then(function(res1){
    $scope.pagesSave = res1;
    console.log(res1)
    $service.doThing2().then(function(res2){
      $scope.pages = $service.formatThings(res2, res1);
      console.log($scope.pages)

  }, function(err){});
}, function(err){});

$ scope.pages应该是最终产品

$ scope.pagesSave应该是预先格式化的数据

但是,控制台记录这些变量会将它们显示为相同。

更奇怪的是,在执行$ service.doThing1()后立即进行控制台记录,显示" res1"具有正确的长度,但只包含来自$ scope.pages的数据,如此图所示。

即使格式化功能还没有发生,

2也会丢失

enter image description here

有谁知道这里发生了什么?

如果有帮助的话,我会使用Chrome进行控制台日志

1 个答案:

答案 0 :(得分:1)

我认为,在formatThings你的函数内发送res1$scope.pagesSave意味着res1等于$scope.pages,等于angular.copy()

因此,解决方案是使用res1创建formatThings的深层副本,并使用创建的对象进行清理。你能分享一下#b-banner { background-color: #d6d6d6; width: 100 auto; height:300px; } #b-banner-content { padding-top:3%; padding-left: 6%; } 吗?