Sto tentando di emulare un evento click su un file input in AngularJS. Ho visto working jQuery examples, ma non voglio usare jQuery.File di input trigger evento click in AngularJS
'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>
Nota: Per qualche motivo il tasto deve essere premuto due volte per attivare la funzione di timeout.
Sto usando setTimeout
a causa di this post.
Come faccio a fare clic a livello di codice su un file con solo AngularJS/vanilla JavaScript?
Il codice nella domanda così come la risposta proposta è un ben noto anti-pattern in Angular.js - non manipolare DOM nei controller, a meno che non si trovi in un controller di direttiva. – yangmillstheory