强迫angular.element .on'改变'在同一个文件上调用指定的函数

时间:2015-06-21 23:26:23

标签: angularjs events jquery-selectors document

当我第一次选择说hello.png时,它会加载它并调用handleFileSelect()函数。但是,如果我再次选择相同的文件,则在我选择另一个文件名之前,函数不会被调用。如何强制它调用该函数?我当时认为修改是关于“改变”的。但不确定会发生什么事。

var handleFileSelect = function(evt) {
  debugger;
  var file = evt.currentTarget.files[0];
  var reader = new FileReader();
  reader.onload = function (evt) {
    $scope.$apply(function($scope){
      $scope.myImage = evt.target.result;
    });
  };
  reader.readAsDataURL(file);
};

angular.element(document.querySelector('#fileInput')).on('change', handleFileSelect);

1 个答案:

答案 0 :(得分:2)

我能想到的最好的方法是用按钮替换文件输入,并在按下按钮时动态创建输入。



function handleFileSelect(evt) {
  alert('Filename: ' + evt.target.files[0].name);
}

var button = document.getElementById('select-file');
button.addEventListener('click', function() {
  var input = document.createElement('input');
  input.type = 'file';
  input.addEventListener('change', handleFileSelect);
  input.click();
});

<button id="select-file">Select File</button>
&#13;
&#13;
&#13;