【问题标题】:Why does another variable change in AngularJS controller?为什么 AngularJS 控制器中的另一个变量会发生变化?
【发布时间】:2016-02-12 22:48:06
【问题描述】:

我有一个 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也改了! 你能帮帮我吗?

【问题讨论】:

  • angular.forEach(value4, function (value5, key5) >> 你肯定需要改进你的代码风格)

标签: javascript json angularjs getjson javascript-objects


【解决方案1】:

因为您将data 的相同引用分配给admin_times 以及admin_times_unix 对象。

这就是为什么改变一个对象会影响另一个对象。

您可以通过使用angular.copy 来解决这个问题,它会创建一个新的引用而不是分配它的实际引用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2015-10-19
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多