Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复制不允许在单独的数组中创建唯一的对象_Javascript_Angularjs_Deep Copy - Fatal编程技术网

Javascript 复制不允许在单独的数组中创建唯一的对象

Javascript 复制不允许在单独的数组中创建唯一的对象,javascript,angularjs,deep-copy,Javascript,Angularjs,Deep Copy,我正在AngularJS中构建一个配置程序,它使用对象$scope.data允许用户通过前端编辑对象。然后,用户可以将此对象保存到$scope.builds中的一个单独数组中,允许它们具有多个配置。以下是向$scope.builds添加另一个配置的函数 $scope.addition = function(){ var newData = angular.copy($scope.data); $scope.builds.push(newData); } 不幸的是,尽管使用了an

我正在AngularJS中构建一个配置程序,它使用对象$scope.data允许用户通过前端编辑对象。然后,用户可以将此对象保存到$scope.builds中的一个单独数组中,允许它们具有多个配置。以下是向$scope.builds添加另一个配置的函数

$scope.addition = function(){
    var newData = angular.copy($scope.data);
    $scope.builds.push(newData);
}
不幸的是,尽管使用了angular.copy函数,但$scope.builds数组中的所有对象似乎都是重复的$scope.data对象

编辑:

以下是$scope.data的简略版本:

$scope.data = [
        {
            'title': 'Select your configuration',
            'required': true,
            'options': [
                {
                    'name': 'Option 1',
                    'select': true,
                    'filter': true
                }, {
                    'name': 'Option 2',
                    'select': false,
                    'filter': true
                }, {
                    'name': 'Option 3',
                    'select': false,
                    'filter': true
                }
            ]
        }, {
            'title': 'Select your configuration',
            'required': true,
            'options': [
                {
                    'name': 'Option 1',
                    'select': true,
                    'filter': true
                }, {
                    'name': 'Option 2',
                    'select': false,
                    'filter': true
                }, {
                    'name': 'Option 3',
                    'select': false,
                    'filter': true
                }
            ]
        }
    ];  

您的
$scope.data
是什么样子的?请提供更多的代码,您可能没有更新
$scope.data
,所以您一直在同一对象上进行复制。@codeepic在此阶段,我没有将$scope.build[I]加载回$scope.data,而是构建了一个用户前端,以查看保存在$scope.builds中的以前的配置。在这里可以看到它们都是重复的。@jamiemgrory我明白了,但我怀疑你的
angular.copy
会一遍又一遍地复制同一个对象。在
添加功能
中复制它之前,但在视图中进行了应该更改的更改之后,您需要检查它或
控制台.log
$scope.data
。我不认为这是角度的问题。复制你是对的。angular.copy没有问题。问题是,更改配置的代码应用于$scope.builds时来自$scope.data,而不是单个$scope.builds[i],这意味着它们看起来都一样,但实际上是单个副本,它们的功能完全符合我的需要。我现在去申请一个新的大脑。谢谢