如何从fabricjs canvas中删除事件侦听器
我正在使用fabricjs在html5中构建交互式地图。
当DOM加载时,我通过调用:* my_event_setter( true )*将我的鼠标hover监听器添加到我的fabricjscanvas实例。
然后为了测试,我想通过调用:* my_event_setter( false )*来删除第一次鼠标hover时的监听器。 因此,应该删除鼠标hover监听器,但事实并非如此。
my_event_setter = function( toggle ) { var lvo = { 'object:over' : function(e){ mouseover_handler( e ) } } ; toggle ? my_fabric_canvas.on( lvo ) : my_fabric_canvas.off( lvo ) ; } mouseover_handler = function( e ) { my_event_setter( false ) ; }
我用以下方法解决了这个
var canvas = fabric.Canvas.activeInstance; canvas.__eventListeners["mouse:down"] = [];
事件在一个数组中,因此可以轻松处理这些事件。
此示例显示了在触发mouseup时如何删除mousemove:
canvas.on('mouse:up', function () { canvas.off('mouse:move', eventHandler); });
使用角度js绑定事件
$scope.closeCurve = function(){ canvas.isDrawingMode = true; canvas.on('mouse:up', function() { canvas.getObjects().forEach(o => { o.fill = 'blue' }); canvas.renderAll(); }); };
删除事件,如
$scope.selectTool = function(){ canvas.isDrawingMode = false; canvas.off('mouse:up'); };
用on方法绑定并从off方法中删除… 🙂