【发布时间】:2015-02-27 10:01:34
【问题描述】:
我正在尝试在 AngularJS 中模拟文件输入的点击事件。我见过working jQuery examples,但我不想用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>
注意:由于某种原因,需要按两次按钮才能触发超时功能。
因为this post,我使用setTimeout。
如何仅使用 AngularJS / vanilla JavaScript 以编程方式单击文件输入?
【问题讨论】:
-
问题中的代码以及建议的答案是 Angular.js 中众所周知的反模式 - 不要在控制器中进行 DOM 操作,除非它在指令控制器中。
标签: javascript html angularjs