ユーザーがボタンをクリックした場合に$httpGet with Angularを使用してサービスを呼び出すと、サービス側でcsv形式を返すようにしました。
So the return is like 1,2,3,4,5,6,7,8,9,10
ユーザーにローカルマシンを保存する方法を提供するための最良の方法は何ですか?
ユーザーがボタンをクリックした場合に$httpGet with Angularを使用してサービスを呼び出すと、サービス側でcsv形式を返すようにしました。
So the return is like 1,2,3,4,5,6,7,8,9,10
ユーザーにローカルマシンを保存する方法を提供するための最良の方法は何ですか?
2つのオプションがあります
1)サーバーからcsvを送信します。
2)データURI。これがあなたが求めているものだと思います。これが例です
/**
* @param{string} content The contents of a file to download.
* @param{string} fileName The name to save the file as on the user's computer.
*/
function(content, fileName) {
var dataUrl = 'data:text/csv;utf-9,' + encodeURI(content);
var link = document.createElement('a');
angular.element(link)
.attr('href', dataUrl)
.attr('download', fileName) // Pretty much only works in chrome
link.click();
}
データをCSV形式で1行保存できるAlasqlライブラリを試すことができます。
function myCtrl($scope) {
$scope.filename = "mydata.csv";
$scope.cities = [{city:"Odessa",population:100000},
{city:"Voronezh",population:201022},
{city: "Paris", population: 3000000}];
$scope.saveCSV = function(filename, content) {
alasql('SELECT city, population INTO CSV("'+$scope.filename+'",{headers:true}) FROM ?',
[$scope.cities]);
};
};
jsFiddleの完全なサンプルコードを参照してください。
この例では、AlasqlはSELECT演算子を使用して、データ配列から必須フィールドを選択します(AngularJSは$$ hashKeyフィールドを作成しますが、これはおそらくユーザーには必要ありません)。これらのデータを使用しない場合は、次のコマンドを使用してCSVファイルにエクスポートするだけです。
alasql('SELECT * INTO CSV('mydata.csv') FROM ?',[$scope.data]);