D'entrée de déclenchement fichier cliquez sur l'événement en AngularJS

Je suis en train d'essayer d'émuler un événement de clic sur un fichier d'entrée dans AngularJS. J'ai vu travail jQuery exemples, mais je ne veux pas utiliser jQuery.

JS:

'use strict';

angular.module('MyApp', []).

controller('MyCtrl', function($scope) {
  $scope.click = function() {
    setTimeout(function() {
      var element = angular.element(document.getElementById('input'));
      element.triggerHandler('click');
      $scope.clicked = true;
    }, 0);
  };
});

HTML:

<script src="https://code.angularjs.org/1.3.14/angular.js"></script>
<div ng-app="MyApp" ng-controller="MyCtrl">
  <input id="input" type="file"/>
  <button ng-click="click()">Click me!</button>
  <div ng-if="clicked">Clicked</div>
</div>

Note: Pour une raison quelconque, le bouton doit être pressé deux fois pour déclencher la fonction de délai.

Je suis en utilisant setTimeout en raison de ce post.

Comment I du programme, cliquez sur un fichier d'entrée avec juste AngularJS /vanille JavaScript?

  • Le code en question ainsi que la réponse proposée est bien connu, les anti-modèle en Angular.js - ne pas faire de manipulation du DOM dans vos contrôleurs, sauf si c'est dans une directive du contrôleur.