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