- 使用blot来进行,在new Quill()前先定义自定义的内容,并且注册成为quill的自定义菜单
const BlockEmbed = Quill.import('blots/block/embed');
class AppPanelEmbed extends BlockEmbed {
static create(value:any) {
const node = super.create(value);
node.setAttribute('contenteditable','false');
node.setAttribute('width','100%');
node.innerHTML = this.transformValue(value);
return node;
}
static transformValue(value:any) {
let handleArr = value.split('\n');
handleArr = handleArr.map( (e:any) => {return e.replace(/^[\s]+/, '').replace(/[\s]+$/, '')});
return handleArr.join('')
}
static value(node:any) {
return node.innerHTML;
}
}
AppPanelEmbed.blotName = 'AppPanelEmbed';
AppPanelEmbed.className = 'embed-innerApp';
AppPanelEmbed.tagName = 'div';
Quill.register(AppPanelEmbed, true);
- 在合适的位置调用转换方法就可以将html代码转换成quill的数据格式了
quill.insertEmbed(quill.getSelection().index || 0, 'AppPanelEmbed', 'html代码块');