2015-11-11 2 views
1

У меня есть контроллер AngularJS, как показано ниже:Почему другая переменная изменяется в контроллере AngularJS?

schedule.controller('schedule', ['$scope', '$http', function($scope, $http){ 
    $http.get('/zt-api/business/admin/' + window.location.pathname.split('/')[2]).success(function(data){ 
     $scope.admin_times = data; 
     $scope.admin_times_unix = data; 
     $scope.weekDays = {'Saturday': "شنبه", 'Sunday': "یکشنبه", 'Monday': "دوشنبه", 'Tuesday': "سه شنبه", 
      'Wednesday': "چهارشنبه", 'Thursday': "پنجشنبه", 'Friday': "جمعه"}; 
     angular.forEach($scope.admin_times, function (value, key) { 
      angular.forEach(value, function (value2, key2) { 
       angular.forEach(value2, function (value3, key3) { 
        angular.forEach(value3, function (value4, key4) { 
         angular.forEach(value4, function (value5, key5) { 
          var info = $scope.admin_times[key]["week_"+ key][key3].times[key5]; 
          if (!isNaN(info)){ 
           var myObj = $.parseJSON('{"date_created":"'+ $scope.admin_times[key]["week_"+ key][key3].times[key5] +'"}'), 
           myDate = new Date(1000*myObj.date_created); 
           $scope.admin_times[key]["week_"+ key][key3].times[key5] = myDate.toLocaleString().split(", ")[1] 
          } 
         }); 
        }); 
       }); 
      }); 
     }); 
    }); 
}]); 

меняю $scope.admin_times, но я не знаю, почему $scope.admin_times_unix также меняется! Вы можете мне помочь?

+0

угловой.forEach (значение4, функция (значение5, ключ5) >> вы обязательно должны улучшить свой стиль кода) –

ответ

4

Потому что вы назначаете одну и ту же ссылку от data до admin_times, а также admin_times_unix.

Именно поэтому изменение в одном объекте влияет на другой объект.

Вы можете решить эту проблему, используя angular.copy, который создает новую ссылку, а не назначает ее фактическую ссылку.

$scope.admin_times_unix = angular.copy(data); 
Смежные вопросы