【发布时间】:2017-08-29 04:13:19
【问题描述】:
我正在使用 Fabric 创建一个协作绘图应用程序。由于此应用的性质,人们最好一次删除所有行,而不是实现某种撤消/擦除功能。
我尝试遍历paths 的列表,如下所示:
canvas.getObjects().forEach((path) => {
if(path.senderId === client.id){
canvas.remove(path);
}
});
// Or
let paths = canvas.getObjects().filter(path => path.senderId === client.id);
while(paths.length) {
canvas.remove(paths[0]);
}
第一个不起作用,因为删除路径会修改数组的长度(如 here 所讨论的)。但是,第二个永远运行,我不知道为什么。
如果这是错误的方法,请告诉我。谢谢!
【问题讨论】:
-
从画布中删除路径不会改变过滤路径数组的长度。
-
@Pointy 好吧,那真是个脑残。当我在家时,我会确保它有效,但我敢打赌就是这样。谢谢!
-
据我所知,
getObjects()返回对库管理的内部数组的引用。但是,当您像这样使用.filter()时,您最终会得到一个 new 数组。
标签: javascript fabricjs