Javascript FabricJS:将SVG添加到画布,但在导出时不可见

Javascript FabricJS:将SVG添加到画布,但在导出时不可见,javascript,canvas,svg,fabricjs,Javascript,Canvas,Svg,Fabricjs,我试图使用FabricJS将SVG添加到画布对象中,然后将其导出到数据url图像,以便用户保存图像,箭头显示在画布中,但当我调用toDataURL方法并检查图像时,它只是一个空图像。我还检查了toSVG()方法,以检查sag是否存在,但它不在导出的SVG中 我创建了一个示例来演示这一点 在本例中,单击按钮时会显示箭头,我调用canvas.toDataURL(),并在浏览器中选中它,显示一个空图像。调用canvas.toSVG()也会返回一个没有箭头SVG的SVG,如fiddle中所示 谁能给我指

我试图使用FabricJS将SVG添加到画布对象中,然后将其导出到数据url图像,以便用户保存图像,箭头显示在画布中,但当我调用toDataURL方法并检查图像时,它只是一个空图像。我还检查了toSVG()方法,以检查sag是否存在,但它不在导出的SVG中

我创建了一个示例来演示这一点

在本例中,单击按钮时会显示箭头,我调用
canvas.toDataURL()
,并在浏览器中选中它,显示一个空图像。调用
canvas.toSVG()
也会返回一个没有箭头SVG的SVG,如fiddle中所示

谁能给我指一下正确的方向吗


提前谢谢

您需要将调用放入回调中,否则它们会在加载数据之前发生,例如

  fabric.loadSVGFromString(svgString, function(results, options) {
    var arrow = results[0];
    canvas.add(arrow);
    console.log(canvas.toDataURL());
    console.log(canvas.toSVG()); 
  });

或者

您需要将调用放入回调中,否则调用会在加载数据之前发生,例如

  fabric.loadSVGFromString(svgString, function(results, options) {
    var arrow = results[0];
    canvas.add(arrow);
    console.log(canvas.toDataURL());
    console.log(canvas.toSVG()); 
  });