Javascript 如何将自己的元素限制为仅包含纯文本?
如何创建只能包含纯文本的块元素?(无粗体、斜体等) 我已将我的元素注册为:Javascript 如何将自己的元素限制为仅包含纯文本?,javascript,ckeditor5,Javascript,Ckeditor5,如何创建只能包含纯文本的块元素?(无粗体、斜体等) 我已将我的元素注册为: model.schema.register(mtHeaderLine, { // Changing inheritAllFrom to '$block' creates an editable element // but then it can contain bold text. inheritAllFrom: '$text', allowIn: mtHeaderDiv, isBlo
model.schema.register(mtHeaderLine, {
// Changing inheritAllFrom to '$block' creates an editable element
// but then it can contain bold text.
inheritAllFrom: '$text',
allowIn: mtHeaderDiv,
isBlock: true
});
然后我沮丧地说:
editor.conversion.for('downcast').add(downcastElementToElement( { model: mtHeaderLine, view: 'div' }
view: (modelElement, viewWriter ) => {
const viewElement=viewWriter.createEditableElement('div',{ 'class': (mtHeaderLine) ,isghost: isGhost });
return viewElement;
}
但这会创建一个我无法编辑的元素
我还试图用以下方式来表达我的沮丧:
editor.conversion.for('downcast').add(downcastElementToElement( { model: mtHeaderLine, view: 'div' }
view: (modelElement, viewWriter ) => {
const viewElement=viewWriter.createEditableElement('div',{ 'class': (mtHeaderLine) ,isghost: isGhost });
return viewElement;
}
但这也没有给我一个可编辑的元素。您需要使用。该方法允许您注册一个回调,该回调将禁止某些上下文中的$text
上的所有属性(例如,模型
元素的子元素):
演示:Hi,为什么不使用配置文件删除功能?因为我只想为我自己的特定元素删除该特性。我仍然希望粗体和斜体可以处理所有其他文本是的,您可以创建一个配置文件,仅根据您的需要应用(通常用于您唯一需要的纯文本块)。我可能不明白你到底想要什么。顺便说一句,这很好用。唯一的小问题是,粗体按钮看起来仍然可以按下。但这可能只是我的自定义gui代码,因为我不使用标准工具栏。在上述解决方案中,应该禁用该命令。因此,如果您的按钮触发了命令(就像它应该触发的那样),那么无论如何都不会发生任何事情。状态绑定也是您需要与UI一起实现的。@Rainmar如果我还想让按钮显示它们被禁用的事实,我该怎么做?我的按钮当前使用on(“change”,(evt,name,isEnabled)侦听更改,如果命令被显式禁用,则该功能可以正常工作。但是addAttributeCheck函数从未触发任何更改事件。我是否应该侦听其他内容?