为什么AngularJS控制器中的另一个变量会发生变化?

alt*_*tic 1 javascript json getjson javascript-objects 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]
                            }
                        });
                    });
                });
            });
        });
    });
}]);
Run Code Online (Sandbox Code Playgroud)

我改变了$scope.admin_times,但我不知道为什么$scope.admin_times_unix也会改变!你能帮助我吗?

Pan*_*kar 5

因为要分配的相同的参考data,以admin_timesadmin_times_unix对象.

这就是改变一个对象的原因,影响其他对象.

您可以通过使用angular.copy哪个创建新引用而不是分配其实际引用来解决此问题.

$scope.admin_times_unix = angular.copy(data);
Run Code Online (Sandbox Code Playgroud)