myApp.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(e) {
$scope.$apply(function(e) {
modelSetter($scope, element[0].files[0]);
});
$scope.setimage();
});
}
Приведенный выше код является моей директивой.AngularJS Предварительный просмотр изображения перед загрузкой с отображением предыдущего изображения
В функции $ scope.setimage()
$scope.setimage = function() {
var file = $scope.myFile;
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
$scope.ImageSrc = e.target.result;
}
}
Всякий раз, когда я выбираю файл,
<img width= 250 height=350 ng-src="{{ImageSrc}}"/>
<input type=`enter code here`"file" file-model="myFile"/>
Сразу предварительного просмотра не отображается. Когда я выбираю второй раз, появляется предварительный просмотр для ранее выбранного файла изображения. Не уверен, что не так.
Вам необходимо применить $() ваши изменения. Вероятно, можно найти некоторое применение в этих методах: http://www.jeffryhouser.com/index.cfm/2014/6/2/How-do-I-run-code-when-a-variable-changes-with-AngularJS – Stuart