问题描述
我正在从vega 2.x迁移到5.13.0版本。我正在尝试生成图表SVG,因此可以根据需要使用。为此,我正在使用toSVG()。使用成功或捕获方法时,两者均不会触发。
var view = new vega.View(vega.parse(chartJson),{renderer: 'none'});
view.toSVG().then(function (svg) {
console.log(svg)
}).catch(function(err){
console.log(err)
});
解决方法
您可以执行以下操作:
Ceil
这将下载SVG。改编自不同的stackoverflow answer(适用于mime类型)和Vega test cases(适用于处理var _v = new vega.View(vega.parse(spec))...
_v.toSVG()
.then(svgString => {
const filename = 'chart.svg';
const url = 'data:image/svg+xml,' + encodeURIComponent(svgString);
const link = document.createElement('a');
link.setAttribute('href',url);
link.setAttribute('target','_blank');
link.setAttribute('download',filename);
link.dispatchEvent(new MouseEvent('click'));
})
Promise)。