在指令内部以编程方式触发锚点标签的AngularJS点击事件。

23 浏览
0 Comments

在指令内部以编程方式触发锚点标签的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
  };
}

0