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); };