2014-05-22 7 views
5

द्वारा गतिशील रूप से बनाए गए तत्व पर क्लिक करें, मैं एक सीएसवी फ़ाइल डाउनलोड करने के लिए एक नया टैग बनाने के लिए AngularJS का उपयोग कर रहा हूं। कोड को नीचे डाउनलोड करने के लिए मैं कोड को ट्रिगर करने के लिए उपयोग करता हूं। डाउनलोड क्रोम पर शुरू होता है लेकिन फ़ायरफ़ॉक्स में नहीं। क्या आपके पास कोई संकेत है कि ऐसा क्यों होता है?ट्रिगर एंजुलरजेएस

var element = angular.element('<a/>'); 
element.attr({ 
    href: exportedString, 
    target: '_self', 
    download: 'test.csv' 
})[0].click(); 

संपादित करें: फ़ायरफ़ॉक्स एक विद्यमान डोम की जरूरत

जे एस:

var linkElem = $("#link"); 
var element = angular.element(linkElem); 

HTML:

<a ng-hide=true id="link"></a> 

संपादित करें 2: Chrome पर, डाउनलोड की गई फ़ाइल नाम "डाउनलोड" है और नहीं पास मूल्य (इस मामले में "test.csv")। कोई सुझाव?

यहाँ वहाँ भी एक plunker

+0

मुझे आश्चर्य है कि यह नवीनतम क्रोम में एक बग हो सकता है ... – gkalpak

उत्तर

5

है यह क्रोम 35 में एक बग issue #377860 में सूचना दी है।

पालन this अधिक जानकारी के

मैं अपने plunker समाधान अद्यतन के लिए इस सवाल का जवाब।

मूल रूप से आप का पालन की तरह उपयोग करने की आवश्यकता है:

var element = document.createElement('a'); 
var blob = new Blob([$scope.exportContent], { 
    type: 'text/csv' 
}); 
var url = URL.createObjectURL(blob); 
element.href = url; 
element.setAttribute('download', 'test.csv'); 
document.body.appendChild(element); //Append the element to work in firefox 
element.click(); 
+0

आकर्षण, thnx की तरह काम कर रहा है – deen

0

प्राप्त करने के लिए दोनों क्रोम & एफएफ काम करने के लिए, मैं वास्तव में पाया गया है कि मैं पहली बार जांच करने के लिए किया था देखने के लिए अगर तत्व [0] अपरिभाषित था (जो यह क्रोम में था लेकिन एफएफ नहीं था):

var link = $("#reportDownloadLink"); 
var element = angular.element(link) 
    .attr('href', dataUrl) 
    .attr('download', data.FileDownloadName) 
    .attr('target', '_blank'); 
(element[0] || element).click(); 
संबंधित मुद्दे