Canvas 删除fabric js中的组/所有选定对象

Canvas 删除fabric js中的组/所有选定对象,canvas,fabricjs,fabricjs2,Canvas,Fabricjs,Fabricjs2,我正在尝试删除fabric js版本:2.0.0-beta.7中的组。 但它只适用于单个对象,因此如何修复它,以便它可以删除所有选定对象 $('.delete_object').click(function(){ var activeObject = canvas.getActiveObject(); if (activeObject.type==='activeSelection') { //For Group selection if (confirm('Ar

我正在尝试删除fabric js版本:2.0.0-beta.7中的组。 但它只适用于单个对象,因此如何修复它,以便它可以删除所有选定对象

$('.delete_object').click(function(){
    var activeObject = canvas.getActiveObject();
    if (activeObject.type==='activeSelection') { //For Group selection
        if (confirm('Are you sure?')) {
            var objs = [];
            activeObject.forEach(function(o) {
                objs.push(o);
            });
            canvas.remove(...objs);
        }
    }
    else if (activeObject) {
        if (confirm('Are you sure?')) {
            canvas.remove(activeObject);
        }
    }
});
代码笔:

台阶 1尝试添加2个或更多对象 2.选择其中一些
3现在尝试删除它,它将通过以下错误:TypeError:activeObject.forEach不是一个函数

使用并从画布中删除所有当前选定的对象

演示

var canvas=newfabric.canvas'canvas1'; $。添加形状。单击函数{ var cur_value=$this.attr'data-rel'; 如果当前值!={ 开关电流值{ 案例“矩形”: var rect=new fabric.rect{ 左:50,, 前50名, 填写:'aaa', 宽度:50, 身高:50, 不透明度:1, 中风:"000",, 冲程宽度:1 }; canvas.addrect; canvas.setActiveObjectrect; 打破 案例“循环”: var circle=新结构。circle{ 左:50,, 前50名, 填写:'aaa', 半径:50, 不透明度:1, 中风:"000",, 冲程宽度:1 }; canvas.addcircle; canvas.setActiveObjectcircle; 打破 } } }; canvas.on'object:scaling',e=>{ var o=e.target; o、 冲程宽度=o.冲程宽度; }; $.add_text.clickfunction{ var add_text=new fabric.IText'Edit Here'{ 左:20,, 前30名, 尺码:18, 可编辑:真 }; canvas.add添加_文本; canvas.setActiveObjectadd_文本; }; $。删除对象。单击函数{ var activeObject=canvas.getActiveObjects; 如果确认“你确定吗?”{ canvas.activeobject; canvas.remove…activeObject; } }; 钮扣{ 最大分辨率:10px; 高度:30px; } div{ 利润率:10px } .delete_对象{ 背景色:红色; 颜色:白色 } 加圈 添加矩形 添加文本 删去
使用获取所有当前选定对象并从画布中删除

演示

var canvas=newfabric.canvas'canvas1'; $。添加形状。单击函数{ var cur_value=$this.attr'data-rel'; 如果当前值!={ 开关电流值{ 案例“矩形”: var rect=new fabric.rect{ 左:50,, 前50名, 填写:'aaa', 宽度:50, 身高:50, 不透明度:1, 中风:"000",, 冲程宽度:1 }; canvas.addrect; canvas.setActiveObjectrect; 打破 案例“循环”: var circle=新结构。circle{ 左:50,, 前50名, 填写:'aaa', 半径:50, 不透明度:1, 中风:"000",, 冲程宽度:1 }; canvas.addcircle; canvas.setActiveObjectcircle; 打破 } } }; canvas.on'object:scaling',e=>{ var o=e.target; o、 冲程宽度=o.冲程宽度; }; $.add_text.clickfunction{ var add_text=new fabric.IText'Edit Here'{ 左:20,, 前30名, 尺码:18, 可编辑:真 }; canvas.add添加_文本; canvas.setActiveObjectadd_文本; }; $。删除对象。单击函数{ var activeObject=canvas.getActiveObjects; 如果确认“你确定吗?”{ canvas.activeobject; canvas.remove…activeObject; } }; 钮扣{ 最大分辨率:10px; 高度:30px; } div{ 利润率:10px } .delete_对象{ 背景色:红色; 颜色:白色 } 加圈 添加矩形 添加文本 删去
您是救世主。@DS9您无需初始化文本对象的行为,它已在文本对象初始化中被调用。如果可以,您是救世主。@DS9您无需初始化文本对象的行为,它已在文本对象初始化中被调用。如果您可以添加一个解释-纯代码块本身不是很有用。请添加一个解释-纯代码块本身不是很有用。
 let activeObjects = canvas.getActiveObjects();
    if (activeObjects.length) {
        if (confirm('Do you want to delete the selected item??')) {
            activeObjects.forEach(function (object) {
                canvas.remove(object);
            });
        }
    }
    else {
        alert('Please select the drawing to delete')
    }