$scope.clickUpload = function(){
$timeout(function() {
angular.element('#upload').trigger('click');
}, 100);
};
Например, 3 раза это работает отлично, но на 4-м клике - ничего не происходит. Как я могу это исправить?
Я редактирую свой оригинальный ответ, так как я не совсем понял, что именно вы пытаетесь сделать. Вы можете создать тип ввода = "файл", не используя jQuery/javascript, чтобы скрыть исходный элемент и имитировать щелчок на нем. Вы можете использовать стандартный HTML/CSS для этого...
CSS:
.upload {
height:25px;
width:70px;
background:#ccc;
color:#fff;
overflow:hidden;
text:'Upload';
}
.upload input {
display: block !important;
width: 70px !important;
height: 25px !important;
opacity: 0 !important;
overflow: hidden !important;
}
#uploadText {
left: 6px;
position: relative;
top: -45px;
}
HTML:
<div class="upload">
<input type="file" name="upload" />
<h3 id="uploadText">Upload</h3>
</div>
Учитывая, что это не идеальные стили, и у меня нет будущего в качестве графического дизайнера, их достаточно, чтобы продемонстрировать, как вы можете изменить стиль стандартного типа ввода = "файл", не требуя javascript.
.trigger('click')
?