2017-03-02 94 views
0

所以问题就在下一个。我从服务中获得一个纯粹的链接,通过点击这个链接,用户可以直接从amazon s3桶下载任何文件。我不能使用ajax,因为它会是CROS域请求,所以我试图模拟点击动态链接。该功能工作正常,但下载不开始。我的问题在哪里,或者我做错了什么?提前致谢。角度触发'点击'不起作用

function triggerClick() { 
     $timeout(function() { 
      console.log($scope.theLink); // returns link 
      console.log(angular.element('#download')); // returns element 
      angular.element('#download').triggerHandler('click'); // returns nothing 
     }, 0); 
    }; 

    $scope.download = function (obj) { 
     downloadServices.attachment(obj) 
      .then(function (response) { 
       $scope.theLink = response.url; 
       triggerClick() 
      }) 
    } 

HTML

<a id="download" ng-click="triggerClick(); $event.stopPropagation();" ng-href="{{theLink}}" ng-hide="true"> 
    Download 
</a> 

HTML的下载功能

<div ng-repeat="att in attachments"> 
    <div class="attach" ng-click="download(att)"> 
     <span>{{att.displayFilename}}</span><br> 
    </div> 
</div> 
+0

对不起..但你在哪里调用download(obj)函数? –

+0

你是否试过'.trigger('click');'而不是'triggerHandler'? – Ankh

+0

@federicoscamuzzi看到我的更新回答 – antonyboom

回答

0

这是我如何解决了这个问题:

function triggerClick() { 
     $timeout(function() { 
      $(document).ready(function() { 
       document.getElementById('download').click(); 
      }) 
     }, 0); 
    } 

    $scope.download = function (obj) { 
     lovServices.attachment(obj) 
      .then(function (response) { 
       $scope.theLink = response.url; 
       triggerClick() 
      }) 
    } 

HTML

<div > 
    <div ng-repeat="att in attachments"> 
     <div class="attach" ng-click="download(att)"> 
      <span>{{att.displayFilename}}</span><br> 
     </div> 
    </div> 
    <a id="download" ng-href="{{theLink}}" ng-hide="true" download> 
     Download 
    </a> 
</div>