当组件具有“变量”属性时,我正在尝试在组件中插入文本。正在设置属性,向下运行attributeToElement,但未将文本添加到属性所在的元素中。
我尝试了很多不同的配置,例如返回容器元素或在返回之前将其转换为小部件,但它们似乎都不起作用。我放置了一个断点,它在调用我的垂头丧气的函数中命中了这个return语句:
if (!conversionApi.consumable.consume(data.item, evt.name)) {
return;
}
这是我的转换代码。
conversion.for( 'upcast' ).elementToAttribute( {
model: {
key: 'variable',
value: viewElement => {
return viewElement.data.splice(1, -1)
},
},
view: {
name: 'bracketvalue',
classes: 'bracket-component-text'
}
} );
conversion.for( 'downcast' ).attributeToElement( {
model: 'variable',
view: ( modelValue, viewWriter ) => {
const writer = viewWriter
const text = writer.createText(`[${modelValue || "placeholder"}]`)
return text
}
} );
我只希望父组件显示一个带有可变内容的文本节点,并且如果有更好或更惯用的方式来处理它,我可以接受。当前,似乎有关我的配置的某些内容阻止了文本节点成为父级的有效子级。
我知道我可以定义一个普通的元素到元素转换器,但是我试图保留在父组件内部渲染普通可编辑元素的能力(如果该属性不存在),所以我宁愿不去用这种方法。