2017-03-02 15 views
0

次は問題です。私はサービスからの純粋なリンクをクリックし、このリンクをクリックすることで、ユーザーはamazon s3バケットから直接任意のファイルをダウンロードできます。私はそれがCROSドメインの要求になるので、私はajaxを使用することはできませんので、私は動的リンクをクリックしてシミュレートしようとしています。関数は正常に機能しますが、ダウンロードは開始されません。私の問題はどこにあるのですか、何が間違っていますか?前もって感謝します。角度トリガ 'クリック'が機能していません

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

申し訳ありませんが、どこでダウンロード(obj)関数を呼び出していますか? –

+0

'triggerHandler'ではなく' .trigger( 'click');を試しましたか? – 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> 
関連する問題