Поскольку вы пытаетесь загрузить тот же файл снова, onChange
событие не срабатывает, потому что это тот же самый файл. Чтобы устранить эту проблему, вам нужно отменить поле ввода после того, как вы загрузили файл. К сожалению, для этого вам нужно использовать jQuery (или получить элемент wit vanilla js). Таким образом, в вашей onFileLoad
функции вы могли бы сделать что-то вроде этого:
angular.element("input[type='file']").val(null); // Unset Input
$scope.filename = undefined; // Unset $scope property
Обратите внимание, что это не «Угловая» способ сделать это. Было бы лучше переместить это в директиву, потому что вам не следует манипулировать DOM внутри контроллера.
Обновление: Как уже говорилось, для этого вам необходимо включить jQuery. Угловой jqLite не поддерживает выбор элементов DOM по его type
. Таким образом, вы включаете jQuery (необходимо загрузить до углового!) Или вы изменяете код, чтобы использовать vanilla JS или jqlite.
Вы всегда пытаетесь использовать тот же файл? Потому что для меня он работает нормально. Обратите внимание, что ng-change не будет срабатывать, если вы попытаетесь снова загрузить тот же файл. (потому что нет никаких изменений) – Founded1898
ya ... Я пытаюсь загрузить тот же файл, есть ли какое-либо обходное решение? –