Javascript CKEditor 5-如何在自定义标记中包装每个文本节点

Javascript CKEditor 5-如何在自定义标记中包装每个文本节点,javascript,ckeditor,ckeditor5,Javascript,Ckeditor,Ckeditor5,就像在标题中,如何在ckeditor 5中以最简单的方式将每个文本(所有方式)包装在自定义标记中 我正在创建自定义atribute元素作为基本样式插件的扩展,但是这个元素在dataDowncast上没有属性(用于模式规范需求)。工作正常,但在使用方法“setData”后的表格插件中,它返回的表格单元格仅包含文本节点: 结构….文本但当我将此结构设置为数据时,将使用get文本 function createViewTableCellElement( tableSlot, tableAttr

就像在标题中,如何在ckeditor 5中以最简单的方式将每个文本(所有方式)包装在自定义标记中

我正在创建自定义atribute元素作为基本样式插件的扩展,但是这个元素在dataDowncast上没有属性(用于模式规范需求)。工作正常,但在使用方法“setData”后的表格插件中,它返回的表格单元格仅包含文本节点:

结构….
文本

但当我将此结构设置为数据时,将使用get文本

function createViewTableCellElement(
  tableSlot,
  tableAttributes,
  insertPosition,
  conversionApi,
  options
) {
  const asWidget = options && options.asWidget;
  const cellElementName = getCellElementName(tableSlot, tableAttributes);

  const cellElement = asWidget
    ? toWidgetEditable(
        conversionApi.writer.createEditableElement(cellElementName),
        conversionApi.writer
      )
    : conversionApi.writer.createContainerElement(cellElementName);

  if (asWidget) {
    setHighlightHandling(
      cellElement,
      conversionApi.writer,
      (element, descriptor, writer) =>
        writer.addClass(normalizeToArray(descriptor.classes), element),
      (element, descriptor, writer) =>
        writer.removeClass(normalizeToArray(descriptor.classes), element)
    );
  }

  const tableCell = tableSlot.cell;

  const firstChild = tableCell.getChild(0);
  const isSingleParagraph =
    tableCell.childCount === 1 && firstChild.name === "paragraph";

  conversionApi.writer.insert(insertPosition, cellElement);

  conversionApi.mapper.bindElements(tableCell, cellElement);

  // Additional requirement for data pipeline to have backward compatible data tables.
  if (!asWidget && !hasAnyAttribute(firstChild) && isSingleParagraph) {
    const innerParagraph = tableCell.getChild(0);

    conversionApi.consumable.consume(innerParagraph, "insert");

    conversionApi.mapper.bindElements(innerParagraph, cellElement);
  }
}