我正在使用 Blots 创建自定义羽毛笔元素,但是在尝试使用存储的 Delta 设置编辑器内容时,我得到了一些奇怪的结果。这有点难以用语言来解释,所以我创建了一个具有可重现场景的代码笔。 https://codepen.io/jake613/pen/wQLvxa - 按照javascript部分顶部的评论进行复制
requirement for codepen link
我正在使用 Blots 创建自定义羽毛笔元素,但是在尝试使用存储的 Delta 设置编辑器内容时,我得到了一些奇怪的结果。这有点难以用语言来解释,所以我创建了一个具有可重现场景的代码笔。 https://codepen.io/jake613/pen/wQLvxa - 按照javascript部分顶部的评论进行复制
requirement for codepen link
创建 delta 时value()
,您的印迹方法的返回值将作为插入指令插入到 delta 中。如果您的印迹类没有值函数,则某些印迹的默认返回值为真。因此,当您应用该增量时,您的 Blot 文本将是真实的。
检查你的印迹的所有父类的值函数,你会看到应用了什么。
在你的StarTagBlot
类中添加一个函数value()
。该函数的返回值必须与您在 delta insert 方法的第一个参数中的返回值相同,new Delta().insert({StarTagBlot: 'some text'}, attributesData)
以显示您的印迹。如果您的自定义印迹中有一些文本,它应该是这样的:
class StarTagBlot extends Inline {
...
//returns what delta expects as insert text
//if empty only true is returned
value() {
return { StarTagBlot: this.domNode.innerText.trim()};
}
...
}