2016-07-10 4 views
3

Первая неделя с AngularJS, я использовал код для директивы загрузки файлов из https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjsКак создать двустороннюю директиву для AngularJS?

app.directive('fileModel', ['$parse', function ($parse) { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
      var model = $parse(attrs.fileModel); 
      var modelSetter = model.assign; 

      element.bind('change', function(){ 
       scope.$apply(function(){ 
        modelSetter(scope, element[0].files[0]); 
       }); 
      }); 
     } 
    }; 
}]); 

Он прекрасно работает при чтении содержимого - пользователь выбирает файл, я прочитал его в JS, а затем после отправки его сервер, я хотел бы очистить его (установив null). И вот проблема - она ​​не работает, имя файла в <input> не изменяется.

Как мне изменить его, получить директиву с двусторонним движением?

ответ

1

У Angularjs, похоже, нет поддержки двусторонней привязки для элемента ввода с типом «файл». См. issue.

Простой способ добиться того, что вы ищете, может быть путем сброса входного значения после завершения загрузки файла. Установить идентификатор, скажем «» FileInput для поля ввода, а затем использовать:

document.getElementById("fileInput").value = ""; 

, чтобы сбросить значение входного сигнала для заготовки.

Для этого же Js fiddle.

+0

Спасибо, жаль, что такого связывания нет. – greenoldman

Смежные вопросы