$scope.saveToPc = function (data, filename) {
if (!data) {
console.error('No data');
return;
}
if (!filename) {
filename = 'download.json';
}
if (typeof data === 'object') {
data = JSON.stringify(data, undefined, 2);
}
var blob = new Blob([data], {type: 'text/json'});
// FOR IE:
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, filename);
}
else{
var e = document.createEvent('MouseEvents'),
a = document.createElement('a');
a.download = filename;
a.href = window.URL.createObjectURL(blob);
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':');
e.initEvent('click', true, false, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
}
};
Rozwiązaniem jest bezczelnie skopiowane z http://bgrins.github.io/devtools-snippets/#console-save
Edycja Dzięki @ufk zmienił metodę przestarzałej initMouseEvent
do initEvent
. Nie wiem, dlaczego nie działa w MSIE 11, prawdopodobnie ze względu na ograniczenia bezpieczeństwa. Microsoft Edge ma nowy sposób ustawiania wszystkich właściwości zdarzenia syntetycznego, ale go nie przetestowałem.
zapisać dane na komputerze? w jakim celu? w pamięci podręcznej? w ciasteczku? w pamięci sesji? w bazie danych? musisz być bardziej szczegółowy o tym, co próbujesz osiągnąć. – Claies
w jakim formacie chcesz zapisać te dane w systemie - csv lub prosty plik tekstowy –