2016-03-28 38 views
0

csv dosyasını doğrudan api'den indirmek için $window.location(url) kullanıyorum.

Başarı mesajı görüntülemem gerekiyor, söz veriyorum, dosya indiriliyor, ancak başarı iletisini gösteremiyorum. o alternatif değil Yukarıdaki kod, sizin downloadcsv işlevi içinde $ q.resolve kullanmayı denerseniz

app.factory('downloadService', function($q, $window, $timeout) { 
    return { 
    download: function(url) { 
     var defer = $q.defer(); 

     $timeout(function() { 
      $window.location.href = url; 

     }, 1000) 
      .then(function() { 
       defer.resolve('success'); 
      }, function() { 
       defer.reject('error'); 
      }); 
     return defer.promise; 
     } 
    } 
} 

:

function download() { 
    getcsv().then(function(response) { 
    if (response === 'success') { 
     $scope.msg = 'success'; 
    } 
    }) 
} 
getCSV() { 
    var defer = $q.defer; 
    downloadCSV(); 
    return defer.promise; 
} 

function dowloadcsv() { 
    $window.location(url); 
} 
+1

Kodunuzun geri kalanını, görüntülemeye çalıştığınız ileti türünü gösterdiğiniz yerde görebilir miyiz? – Tim

+0

'fonksiyonu indir() { getcsv() daha sonra (fonksiyonu (yanıt) { halinde (yanıt === başarısı ') {$ scope.msg = başarısı';} }). } getCSV () { var defer = $ q.defer; indirCSV(); return defer.promise; } function dowloadcsv() { $ window.location (url); } ' – Sandeep

+0

Her şeyden önce, çözülecek bir değer vermeyeceksin, o zaman senin asla vurulmayacaksın. 'Defer.resolve (value); https://docs.angularjs.org/api/ng/service/$q#resolve – CShark

cevap

0

Sen bir söz döndüren $ zaman aşımı hizmetini kullanabilirsiniz.

+0

Teşekkür Ederim – Sandeep

+0

Ancak, dikkat edilmesi gereken bir şey de 1000 $ 'dan "$ timeout"' a geçerek, o milisaniyelerin (belki de istediğiniz, idk) "indirmesini" geciktirmektir. Ayrıca, '$ timeout' aslında burada bir şey yapmaz çünkü her zaman bu örnekteki başarıyı geri döndürecektir (çünkü https://docs.angularjs.org/ adresini kullanarak iptal ederseniz $ timeout'taki sözler reddedilir. aPI/ng/hizmet/$ zaman aşımı #) iptal edin. – CShark