带有Promise的CKEditor 5模型转换

时间:2018-11-28 15:25:18

标签: javascript ckeditor ckeditor5

我正在创建一个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方法的对象的数量。该“视图”属性需要一个函数来返回要显示的对象。 有办法实现吗?

1 个答案:

答案 0 :(得分:1)

CKEditor 5不支持异步转换。这会使转换复杂化,并且会带来糟糕的体验,因为在获取过程中需要锁定编辑器。我建议创建一个同步转换,然后从数据库中将其替换为您的特定元素。