Javascript 如何从文件列表拼接选定元素

Javascript 如何从文件列表拼接选定元素,javascript,angularjs,file-upload,Javascript,Angularjs,File Upload,使用javascript中的fileReader预览选定文件 如果我从预览图像中删除。它必须从选定的文件中删除 您可以使用原生JS数组#forEach函数,因为它允许您访问数组中对象的索引 我使用id假设您实际将id传递给函数,以标识需要从数组中删除的对象。看看上面的代码,name看起来更理想,当然,如果这是对象中唯一的属性的话 $scope.file.forEach(function(file, index){ if (file.id === id){ // Where id is

使用javascript中的fileReader预览选定文件

如果我从预览图像中删除。它必须从选定的文件中删除


您可以使用原生JS数组#forEach函数,因为它允许您访问数组中对象的索引

我使用
id
假设您实际将
id
传递给函数,以标识需要从数组中删除的对象。看看上面的代码,
name
看起来更理想,当然,如果这是对象中唯一的属性的话

$scope.file.forEach(function(file, index){

    if (file.id === id){ // Where id is your identifier, could be file.name === name.
        this.splice(index, 1);
    }

});
您不能拼接一个。它是只读的!它只有
长度
,但没有像
拼接”、“拆分
等阵列逻辑。因此,您必须在阵列中从它复制一个副本:

// **A**
$scope.fileArray = [];
angular.forEach($scope.file, function(file) {
    $scope.fileArray.push(file)
});
然后,您可以使用以下方法从该阵列拼接:

$scope.deleteImage = function(index) {
   $scope.fileArray.splice(index, 1);
})
当您提到“预览”时,我猜您正在显示所选图像的缩略图。您还必须更改任何显示逻辑,才能使用
文件数组
而不是当前的
文件
。因此,当用户删除一个元素时,它会自动更新

<div ng-repeat="image in fileArray"... >
然后,您应该能够查看分配给它的文件阵列:

$scope.$watch('fileArray', function() {
    // Code from **A**
    ....
});

我们能看到控制器和html代码吗?您使用什么唯一的标识符来标识要删除的对象?下面的答案是否正确?
<div ng-repeat="image in fileArray"... >
<input type="file" name="files" file-model="filesArray" multiple accept="image"/>
$scope.$watch('fileArray', function() {
    // Code from **A**
    ....
});