Javascript Fabric.js无法处理新加载的背景图像

Javascript Fabric.js无法处理新加载的背景图像,javascript,vuejs2,fabricjs,Javascript,Vuejs2,Fabricjs,我使用vue和Fabric.js开发了缩放和拖动图片的功能。当我从服务器界面获得不同的图片参数时,画布仍然可以刷新,但当我拖动和缩放时,图片将跳转到第一个请求的图像 这是我的密码 //template <canvas id="canvas" width="500px" ref="can" height="480px" style="border: 1px solid #333"></canvas> //script initCanvas (url) {

我使用vue和Fabric.js开发了缩放和拖动图片的功能。当我从服务器界面获得不同的图片参数时,画布仍然可以刷新,但当我拖动和缩放时,图片将跳转到第一个请求的图像

这是我的密码

//template
<canvas id="canvas" width="500px" ref="can" height="480px" style="border: 1px solid #333"></canvas>

 //script 
initCanvas (url) {


      var canvas = new Fabric.Canvas('canvas')

      canvas.setBackgroundImage(
        url,
        canvas.renderAll.bind(canvas),
        {
          scaleX: canvas.width / 1654,
          scaleY: canvas.height / 2338
        }
      )


      canvas.on('mouse:down', function (e) {
        this.panning = true
        canvas.selection = false
      })

      canvas.on('mouse:up', function (e) {
        this.panning = false
        canvas.selection = true
      })

      canvas.on('mouse:move', function (e) {
        if (this.panning && e && e.e) {
          var delta = new Fabric.Point(e.e.movementX, e.e.movementY)
          canvas.relativePan(delta)
        }
      })

      canvas.on('mouse:wheel', function (e) {
        var zoom = (event.deltaY > 0 ? -0.1 : 0.1) + canvas.getZoom()
        zoom = Math.max(0.1, zoom) 
        zoom = Math.min(3, zoom) 
        var zoomPoint = new Fabric.Point(event.pageX, event.pageY)
        canvas.zoomToPoint(zoomPoint, zoom)
      })
    },
//模板
//剧本
初始化画布(url){
var canvas=new Fabric.canvas('canvas')
canvas.setBackgroundImage(
网址,
canvas.renderal.bind(canvas),
{
scaleX:canvas.width/1654,
scaleY:canvas.height/2338
}
)
canvas.on('mouse:down',函数(e){
此参数为.panning=true
canvas.selection=false
})
canvas.on('mouse:up',函数(e){
此参数为.panning=false
canvas.selection=true
})
canvas.on('mouse:move',函数(e){
如果(这是平移和平移(&e&&e.e){
var delta=新结构点(e.e.movementX,e.e.movementY)
canvas.relativePan(三角洲)
}
})
canvas.on('mouse:wheel',函数(e){
var zoom=(event.deltaY>0?-0.1:0.1)+canvas.getZoom()
缩放=数学最大值(0.1,缩放)
缩放=数学最小值(3,缩放)
var zoomPoint=new Fabric.Point(event.pageX,event.pageY)
canvas.zoomToPoint(zoomPoint,zoom)
})
},

您可以尝试使用
fabric.Image.fromURL
获取更多参考信息,您可以从下面的官方链接查看源代码


您可以尝试使用
fabric.Image.fromURL
获取更多参考,您可以从下面的官方链接查看源代码


谢谢你的回答,这不起作用,相反,它似乎在前一张图片的底部不断加载新图片不要在init canvas方法中调用它谢谢你的回答,这不起作用,相反,它似乎在前一张图片的底部不断加载新图片不要在init canvas方法中调用它
fabric.Image.fromURL(url, function (img) {
    canvas.setBackgroundImage(img);
    canvas.setHeight(img.height);
    canvas.setWidth(img.width);
});