已解决:ckeditor5-vue保留羽毛笔类

问题描述 投票:0回答:1

我想知道如何将具有特定类的html转换为具有特定样式的html。例如,如果原始的html是<p class="ql-align-center">text</p>,我想将其转换为<p style="text-align: center;">text</p>。我确实看了一下ckeditor5文档,但是我迷路了,因为那里的信息太多了。

我问的原因是因为我目前正在将RTF编辑器从羽毛笔更改为ckeditor5。 Quill添加了一些类来应用某些样式,而ckeditor5只是对它们进行内联样式化(某些样式可以使用类来完成),并且由于ckeditor5过滤掉了这些属性,因此一些文本出现而没有应用任何样式。这成为一个问题,因为用鹅毛笔写的文本在数据库中,当我用ckeditor5打开它时,样式消失了。

我编写了以下转换插件,试图将class="ql-align-center"转换为styles="text-align: center;",但无济于事。

// plugin.js
export default ( editor ) => {
  editor.conversion.attributeToAttribute( {
    model: {
      key: 'align',
      values: [ 'center' ]
    },
    view: {
      center: {
        key: 'class',
        value: 'ql-align-center'
      }
    }
  })
}
// richTextEditor.js
<template>
  <div>
    <ckeditor
      :editor="editor"
      v-model="htmlForEditor"
      :config="editorConfig"
    ></ckeditor>
  </div>
</template>


<script>
  import CKEditor from '@ckeditor/ckeditor5-vue'
  import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor'
  import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials'
  import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment'
  import MyPlugin from '@/path/to/plugin'

  export default {
    components:{
      ckeditor: CKEditor.component
    },
    data: function (){
      return {
        editor: ClassicEditor,
        htmlForEditor: inputHtmlThatCameFromQuill,
        editorConfig: {
          plugins: [
            Essentials,
            Alignment,
            MyPlugin
          ],
          toolbar: {
            items: [
              'alignment'
            ]
          }
        }
      }
    }
  }
</script>
vue.js ckeditor rich-text-editor ckeditor5
1个回答
0
投票

已解决,尽管不是我想要的方式。我选择了保留课程的路线。可以通过使用以下插件来完成。我只是使用了错误的密钥名称。

// plugin.js
export default ( editor ) => {
  editor.conversion.attributeToAttribute( {
    model: {
      key: 'alignment',
      values: [ 'center' ]
    },
    view: {
      center: {
        key: 'class',
        value: 'ql-align-center'
      }
    }
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.