AngularJS导出文本自动添加双引号,如何修改代码解决?
解决导出文本自动添加双引号的问题
你遇到的双引号问题其实很好解决——问题出在你用了angular.toJson()来处理普通文本!这个方法是专门用来把JavaScript对象/数组转换成JSON格式字符串的,当你传入一个普通字符串时,它会把这个字符串当作JSON的字符串值,自动给它加上双引号包裹起来,这就是你导出内容带引号的原因。
要修复这个问题,只需要做两个小改动:
- 直接使用原始的文本变量,跳过
angular.toJson()的转换(因为你要导出的是纯文本,不是JSON数据) - 把Blob的MIME类型改成更标准的
text/plain(原来的text/text不是标准类型)
修改后的完整代码如下:
$scope.clickExport = function() { var txt = 'This is sample text to export'; var objectToExport = txt; var filename = response.data.fileName; // 直接传入原始文本,不用angular.toJson转换,同时修正MIME类型 var blob = new Blob([objectToExport], { type: 'text/plain' }); 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/plain', 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); } }
这样修改后,导出的文本就会是你原本的内容,不会被自动添加双引号了。
内容的提问来源于stack exchange,提问作者Deekshith S
相关产品推荐
相关产品推荐

