Déclenchez l'événement de clic de fichier d'entrée dans AngularJS

J'essaie d'imiter un événement de clic sur une entrée de fichier dans AngularJS. J'ai vu des exemples de travail jQuery , mais je ne veux pas utiliser jQuery.

'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); }; }); 
 <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 timeout.

J'utilise setTimeout raison de cette publication .

Comment puis-je programmer une entrée de fichier avec un simple JavaScript de AngularJS / vanilla?

Vous pouvez simplement utiliser

  <button type="button" onclick="document.getElementById('input').click()">Click me!</button> 

OU

 $scope.click = function() { setTimeout(function() { document.getElementById('input').click() $scope.clicked = true; }, 0); };