Поведение браузера по умолчанию показывает выбранные в данный момент файлы, чтобы указать, что вы должны настроить это поле. Кроме того, я видел ваш собственный код директивы, он не позволяет выбирать несколько файлов из разных каталогов.
Итак, вы можете создать еще одну переменную области видимости, и каждый раз, когда пользователь выбирает файл / файлы, вы помещаете эти файлы в этот массив. Таким образом, у вас есть набор всех выбранных файлов из одних и тех же / разных каталогов, а затем вы можете иметь функцию удаления для каждого файла, который в конечном итоге будет обновлен.
Обновлен HTML просмотр:
Attachment: <input type="file" ng-file-model="files" multiple /><br>
<p ng-repeat="file in filesToUpload track by $index">
{{file.name}} <span class="delete-file" ng-click="deleteFile($index)">X</span>
</p>
И для этой новой области действия директивы обновления массива. $ Apply part as:
scope.$apply(function () {
if (isMultiple) {
modelSetter(scope, values);
} else {
modelSetter(scope, values[0]);
}
if(values){
scope.filesToUpload = scope.filesToUpload.concat(values);
}
});
В контроллере есть функция deleteFile:
$scope.deleteFile = function(index){
$scope.filesToUpload.splice(index, 1);
};
Пример рабочей демонстрации
Теперь пользователь сможет удалять файлы в любое время. Но поле ввода будет по-прежнему отображать последний выбранный файл / файлы и после удаления определенного файла также не изменит его статус, поэтому вы можете просто скрыть поле с непрозрачностью: 0; css & затем создайте настроенную кнопку «Upload» и нажмите на этот фактический скрытый элемент ввода файла.
Обновление : проверьте это обновление того же кода с помощью пользовательской кнопки загрузки:
Пример Plunker