我正在创建一个CKEditor 5插件,该插件必须基于REST调用的结果显示一个列表。 我将架构项目注册到:
editor.model.schema.register('myItem', {
allowIn: '$root',
isBlock: true,
isObject: true
});
然后添加了转换器:
editor.conversion.for('upcast').add(upcastElementToElement({
view: {
name: 'div',
classes: 'myItem'
},
model: 'myItem'
}));
editor.conversion.for('dataDowncast').add(downcastElementToElement({
model: 'myItem',
view: (modelElement, viewWriter) => {
return getContent(modelElement, viewWriter);
}
}));
editor.conversion.for('editingDowncast').add(downcastElementToElement({
model: 'myItem',
view: (modelElement, viewWriter) => {
const div = getContent(editor.model, viewWriter);
return toWidget( div, viewWriter, { label: 'widget label' } );
}
}));
我的getContent方法负责通过REST调用获取数据。我的问题是,如果我使用 axios 或 fetch 来获取数据,它将返回一个Promise,并且我不知道如何将结果传递给'view'属性传递给downcastElementToElement方法的对象的数量。该“视图”属性需要一个函数来返回要显示的对象。 有办法实现吗?
答案 0 :(得分:1)
CKEditor 5不支持异步转换。这会使转换复杂化,并且会带来糟糕的体验,因为在获取过程中需要锁定编辑器。我建议创建一个同步转换,然后从数据库中将其替换为您的特定元素。