我想ng-click
在运行时触发一个元素,如:
_ele.click();
或者
_ele.trigger('click', function());
如何才能做到这一点?
我想ng-click
在运行时触发一个元素,如:
_ele.click();
或者
_ele.trigger('click', function());
如何才能做到这一点?
语法如下:
function clickOnUpload() {
$timeout(function() {
angular.element('#myselector').triggerHandler('click');
});
};
// Using Angular Extend
angular.extend($scope, {
clickOnUpload: clickOnUpload
});
// OR Using scope directly
$scope.clickOnUpload = clickOnUpload;
有关 Angular Extend 方式的更多信息,请参阅此处。
如果您使用的是旧版本的 angular,则应该使用trigger而不是triggerHandler。
如果您需要应用停止传播,您可以按如下方式使用此方法:
<a id="myselector" ng-click="clickOnUpload(); $event.stopPropagation();">
Something
</a>
angular.element(domElement).triggerHandler('click');
编辑: 看来您必须跳出当前的 $apply() 循环。一种方法是使用 $timeout():
$timeout(function() {
angular.element(domElement).triggerHandler('click');
}, 0);
见小提琴:http : //jsfiddle.net/t34z7/
以下解决方案对我有用:
angular.element(document.querySelector('#myselector')).click();
代替 :
angular.element('#myselector').triggerHandler('click');
以防万一每个人都看到它,我添加了额外的重复答案和一条不会破坏事件传播的重要行
$scope.clickOnUpload = function ($event) {
$event.stopPropagation(); // <-- this is important
$timeout(function() {
angular.element(domElement).trigger('click');
}, 0);
};
使用普通的旧 JavaScript 对我有用:
document.querySelector('#elementName').click();