Javascript 如何关闭“捕捉到栅格”fabricjs

Javascript 如何关闭“捕捉到栅格”fabricjs,javascript,jquery,fabricjs,Javascript,Jquery,Fabricjs,我有一个复选框,我想在fabric js中启用和禁用Snap2grid。现在我可以打开了,好的,但是我怎么关闭呢 这是一个非常大的JSFIDLE,我认为您的代码中可能存在其他问题 有几种不同行为的方法一种是检查事件函数本身的一些全局属性: canvas.on('object:moving', function(event) { if(window.snapTo) { event.target.set({ left: Math.round(options

我有一个复选框,我想在
fabric js
中启用和禁用
Snap2grid
。现在我可以打开了,好的,但是我怎么关闭呢


这是一个非常大的JSFIDLE,我认为您的代码中可能存在其他问题

有几种不同行为的方法一种是检查事件函数本身的一些全局属性:

canvas.on('object:moving', function(event) {
  if(window.snapTo) {
        event.target.set({
            left: Math.round(options.target.left / grid) * grid,
            top: Math.round(options.target.top / grid) * grid
        });
  } else {
    // do nothing
  }
})
另一种方法是删除事件

您可以删除以下所有事件:

canvas.off();
或某一类型的所有事件:

canvas.off('object:moving');
或者,如果您有对函数的引用,则仅使用单绑定事件处理程序:

canvas.off('object:moving', eventHandlerFunction);

相关问题/答案:我知道这是一个大的fabricjs,我在前面的问题中问过,但没有回答如何添加同一个Rect的多个实例。但这是一个很好的答案。我想我试过画布了。off('object:moving');但是我没有,因为这起作用了。你不能多次添加完全相同的rect,但是你可以
.clone()
获得一个完全相同的副本。谢谢Stefan。这让我很困惑。我还是有点困惑。我的函数名是gridOff()。所以我尝试了:canvas.off('object:moving',gridOff);这对我不起作用,但canvas.off('object:moving');确实有效。我想我的问题是语法。我不是一个好的程序员,但我正在努力。再次感谢你的回答-雷切尔
canvas.off('object:moving', eventHandlerFunction);