在指令内部以编程方式触发锚点标签的AngularJS点击事件。
在指令内部以编程方式触发锚点标签的AngularJS点击事件。
我已经创建了一个指令来下载音频文件。在点击指令标签时,我从服务器获取了Base64编码的数据,并将锚点标签(这是指令的模板)的'href'属性设置为获取的数据。然后,我试图以编程方式点击'a'标签,以便文件下载弹出窗口可以显示给用户。问题在于,当触发'click'事件时,它不起作用,但手动点击第二次时它可以工作。
我已经嵌入了fiddle代码。非常感谢任何帮助。
以下是指令代码:
angular.module('myTestApp', []) .directive('webDownloader', downloadFn); downloadFn.$inject = ['$timeout']; function downloadFn($timeout) { function downloadLinkFn(scope, element) { scope.fileName = scope.fileName || 'test-file'; scope.populateData = function() { if (scope.dataURL) { } else { scope.webProvider() .then(function (response) { scope.dataURL = 'data:audio/ogg;base64,' + response; $timeout(function() { angular.element(element). find('a').triggerHandler('click'); }, 0); }); } }; // 返回对象。 return { template: '', transclude: true, restrict: 'A', scope: { fileName: '@', webProvider: '&' }, link: downloadLinkFn }; }