1、继上一篇,项目中会有几个父结点,可以拖动父结点,然后将子结点拖到里面,这样就便于结点的管理与分类。
2、那么现在的问题就是如果是拖动的是父类型的结点,直接到父结点中,这样是不匀许的。
3、我们在事件的文档中找到了validate方法:
这个方法与findParent是一致的,默认是true,也就是说所有结点都是可以的。
4、代码如下:
embedding: {
enabled: true,
findParent({ node, view }) {
const bbox = node.getBBox();
return this.getNodes().filter((node) => {
const data = node.getData<any>();
if (data && data.parent) {
const targetBBox = node.getBBox();
return bbox.isIntersectWithRect(targetBBox);
}
return false;
});
},
validate({ child, parent, childView, parentView }) {
let childData = child.store.data.attrs.data;
if (child) {
if (childData && childData.parent) {
return false; // 不允许拖拽
}
return true;
}
return false;
},
},
5、通过以上的validate事件,我们也可以做到过滤节点的结果。