Javascript angular.copy和angular.extend-仍然引用原始数组的副本

Javascript angular.copy和angular.extend-仍然引用原始数组的副本,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我检查了一下,发现了这个问题——标题描述了我遇到的问题,尽管答案没有帮助 我试图复制一个数组,用该数组广播一个事件,然后清除源数组。在这样做时,我的副本也是空的。我可以通过注释掉清除源代码的代码来验证副本的有效性,就像我的目的地一样 我尝试了angular.copy和angular.extend,以确保参数正确,因为这两种方法的参数是相反的 我也尝试过使用作用域上的数组,而不仅仅是局部变量-这没有什么区别 使用此选项的代码部分包括: dz.on('queuecomplete', func

我检查了一下,发现了这个问题——标题描述了我遇到的问题,尽管答案没有帮助

我试图复制一个数组,用该数组广播一个事件,然后清除源数组。在这样做时,我的副本也是空的。我可以通过注释掉清除源代码的代码来验证副本的有效性,就像我的目的地一样

我尝试了angular.copy和angular.extend,以确保参数正确,因为这两种方法的参数是相反的

我也尝试过使用作用域上的数组,而不仅仅是局部变量-这没有什么区别

使用此选项的代码部分包括:

    dz.on('queuecomplete', function () {
        console.log('queue complete')
        console.log(uploadedFiles)
        var filesOut = [];
        angular.copy(uploadedFiles, filesOut);
        $rootScope.$broadcast('file.upload.complete', { files: filesOut });
        scope.uploadComplete = true;
        scope.completeMessage = 'Wooohoo!'
        resetAll();
    });

    function resetAll() {
        dz.removeAllFiles();
        scope.hasTooMany = false;
        scope.hasBadTypes = false;
        scope.manualUpload = false;
        hasHadErrors = false;
        // If i comment this out then my listener (below) shows all files
        // if i leave this as-is then both source and dest arrays are empty
        uploadedFiles = [];
        scope.$apply();
    }
在另一个控制器中,我正在收听$broadcast

如前所述,我也尝试过extend


我错过了什么?或者,我是在期待这些方法不是专门为之设计的吗?

嗨,Darren,请看这里的副本,而不是引用原始阵列库。是的,我在那里看到它,在angularjs文档网站上也看到它是独立的——尽管我不知道为什么我的不是。。你能从上面的代码中看出原因吗?如果你把angular.copyuploadedFiles,FileOut;console.loguploadedFiles
var filesUploaded = $scope.$on('file.upload.complete', function (event, data) {
    console.log('files uploaded:')
    // if 'uploadedFiled = []' is not commented out then data.files is an empty array
    console.log(data);
});