W AngularJS używam opisanego tutaj podejścia do obsługi typu wejściowego = plik.Jak wyczyścić dane wejściowe z Angular JS
- https://groups.google.com/forum/?fromgroups=#!topic/angular/-OpgmLjFR_U
- http://jsfiddle.net/marcenuc/ADukg/89/
Markup:
<div ng-controller="MyCtrl">
<input type="file" onchange="angular.element(this).scope().setFile(this)">
{{theFile.name}}
</div>
Kontroler:
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function($scope) {
$scope.setFile = function(element) {
$scope.$apply(function($scope) {
$scope.theFile = element.files[0];
});
};
});
Jak wspomniano jest to bit hack, ale MOS tly działa dla moich celów. Potrzebuję jednak sposobu, aby wyczyścić dane wejściowe z pliku po zakończeniu przesyłania - tj. Od kontrolera.
Mogę całkowicie zhakować i użyć jQuery lub czegoś, aby znaleźć element wejściowy i wyczyścić go, ale miał nadzieję na coś bardziej eleganckiego.
Nice. Jedyny problem, jaki zauważyłem, to to, że po wybraniu pliku wystąpił błąd w dzienniku konsoli dotyczący nieprawidłowego elementu HTML w funkcji. $ Watch. (Działa w Chrome) –
Obejście polega na zmianie "selector.val (plik);" do "if (file == null) selektor.val (plik);" –