CKEditor5如何向上转换可选属性?自定义插件属性缺失问题
问题原因
你当前的向上转换规则里,view.attributes: ['ver']是强制要求
解决方案
修改view的匹配规则,去掉对ver属性的强制要求,让所有
// Conversion from a view element to a model attribute conversion.for('upcast').elementToAttribute({ view: { name: 'bbref' // 移除attributes数组,不再强制要求ver属性存在 }, model: { key: 'bibleref', // Callback function provides access to the view element value: viewElement => { // 主动获取ver属性,不存在则返回undefined let ver = viewElement.getAttribute('ver'); console.log('in upcast ver=[' + (ver ?? 'undefined') + ']'); // 根据需求处理undefined:返回空字符串/null/或者直接返回ver return ver ?? ''; } } });
额外说明
如果需要限制attributes: { ver: true }——这里的true表示ver属性可以存在也可以不存在,但元素不能有其他未声明的属性:
view: { name: 'bbref', attributes: { ver: true // 允许ver存在或不存在,拒绝其他属性 } }
修改后,三种输入形式都会被正确向上转换:
- 带
ver="RSV":返回"RSV" - 带
ver="":返回空字符串 - 无ver属性:返回空字符串(或你指定的默认值)
内容的提问来源于stack exchange,提问作者jons
相关产品推荐
相关产品推荐

