Praxis der Verwendung von Tinymce Rich Text zum Anpassen von Symbolleistenschaltflächen in Vue

Praxis der Verwendung von Tinymce Rich Text zum Anpassen von Symbolleistenschaltflächen in Vue

Es gibt viele Rich-Text-Editoren, die beliebtesten sind UEditor, Kindeditor, CKEditor usw. Aber heute werden wir die Plugin-Entwicklung von tniyMCE implementieren.

Installieren Sie die Deklarationsdateien tinymce, tinymce ts und tinymce-vue

npm installiere tinymce -S
npm installiere @types/tinymce -S
npm installiere @tinymce/tinymce-vue -S

Paketkomponenten

<Vorlage>
    <div>
        <editor :id="id" v-model="Inhalt" :init="init"></editor>
    </div>
</Vorlage>

<script lang="ts">
importiere { Komponente, Prop, Vue, Watch } von „vue-property-decorator“;

importiere Tinymce von „Tinymce“;
Editor aus „@tinymce/tinymce-vue“ importieren;

importiere „tinymce/themen/silber/thema“;
importiere „tinymce/plugins/image“;
importiere „tinymce/plugins/link“;
importiere „tinymce/plugins/code“;
importiere „tinymce/plugins/table“;
importiere „tinymce/plugins/lists“;
importiere „tinymce/plugins/contextmenu“;
importiere „tinymce/plugins/wordcount“;
importiere „tinymce/plugins/colorpicker“;
importiere „tinymce/plugins/textcolor“;
importiere „tinymce/plugins/media“;
importiere „tinymce/plugins/fullscreen“;
importiere „tinymce/plugins/preview“;
importiere „tinymce/plugins/pagebreak“;
importiere „tinymce/plugins/insertdatetime“;
importiere „tinymce/plugins/hr“;
importiere „tinymce/plugins/paste“;
importiere „tinymce/plugins/codesample“;
importiere „tinymce/icons/default/icons“;

Konsole.log(tinymce);

@Component({ Name: 'TinymceEditer', Komponenten: { Editor } })
exportiere Standardklasse erweitert Vue {
    //Prop-ID festlegen
    @Prop({ Standard: 'vue-tinymce-' + +neues Datum() }) ID!: Zeichenfolge;
 
 //Standardhöhe @Prop({ default: 300 }) Höhe!: Zahl;

    @Prop({ Standard: '' })
    privater Wert!: Zeichenfolge;

    privater Inhalt: Zeichenfolge = '';

    @Watch('Wert')
    privat beiÄnderungWert(neuerWert: Zeichenfolge) {
        dieser.Inhalt = neuerWert;
    }

    @Watch('Inhalt')
    private onChangeContent(newVal: string) {
        dies.$emit('Eingabe', neuerWert);
    }

    //Rich-Text-Box-Init-Konfiguration private get init() {
        zurückkehren {
            Selektor: '#' + this.id, //Rich-Text-Editor-ID
            language: 'zh_CN', //Sprachelanguage_url: '/tinymce/zh_CN.js', //Sprachpaketeskin_url: '/tinymce/skins/ui/oxide', //Der Editor benötigt ein Skin, um richtig zu funktionieren. Legen Sie daher eine skin_url fest, die auf die zuvor kopierte Skin-Datei verweist.menubar: false, //Menüleisteplugins:
                „Linklisten, Bildcodetabelle, Farbauswahl, Textfarbe, Wortanzahl, Kontextmenü, Medientabelle, Vollbildvorschau, Seitenumbruch, Datum/Uhrzeit einfügen, Std., Codebeispiel einfügen, Emoticons“, //Plugin-Symbolleiste:
                :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
            //Ausführung instanziieren init_instance_callback: (editor: any) => {
                dieser.Inhalt && editor.setContent(dieser.Inhalt);

                //dies.hasInit = true
                editor.on('NodeChange KeyUp ändern Inhalt festlegen', () => {
                    //dies.hasChange = true
                    dieser.Inhalt = editor.getContent();
                });
            },

            //Rückruf für Videoeinstellungen video_template_callback: (data: any) => {
                geben Sie `<Videobreite=" zurück
                    ${data.width} " Höhe="${data.height}"
                    ${data.poster ? 'poster="' + data.poster + '"' : ''}
                    Kontrollen="Kontrollen">
                    <Quelle src="${data.source}"/>
                </video>`;
            },

            //Bild-Callback einfügen images_upload_handler: (blobInfo: any, success: Funktion, failure: Funktion) => {
                this.handleImgUpload(blobInfo, Erfolg, Fehler);
            },
        };
    }

    privat gemountet() {
        dieser.Inhalt = dieser.Wert;
    }

    //Bilder hochladen private handleImgUpload(blobInfo: any, success: Funktion, failure: Funktion) {
        this.$emit('upload', blobInfo, Erfolg, Fehler);
    }
}
</Skript>

<style lang="scss">
.tox-tinymce-aux {
    z-index: 3000 !wichtig;
}
</Stil>

Komponentenverwendung

<Vorlage>
   <tinymce v-model="Inhalt" />
</Vorlage>

<script lang="ts">
importiere { Komponente, Vue } von „vue-property-decorator“;
importiere Tinymce aus „@/components/tinymce/tinymce.vue“;

@Komponente({
    Komponenten:
        Kleiner,
    },
})
exportiere Standardklasse erweitert Vue {
    privater Inhalt: Zeichenfolge = '';
}
</Skript>

<style lang="scss" scoped></style>

Vue verwendet den Rich-Text-Editor Tinymce zum Anpassen von Symbolleistenschaltflächen

Bildbeschreibung hier einfügen

Hier habe ich einen Verkleinerungsknopf hinzugefügt

 init: {
        Sprache: "zh_CN",
        skin_url: "/tinymce/skins/ui/oxide",
        Höhe: "100%",
        Schriftgrößenformate: "8pt 10pt 12pt 14pt 16pt 18pt 24pt 36pt",
        Schriftformate:
          „Microsoft YaHei=Microsoft YaHei;Gründer FangSong_GBK=Gründer FangSong_GBK;Songti=simsun,serif;FangSongti=FangSong,serif;Boldti=SimHei;Times New Roman=Times New Roman;“,
        Plugins: {
	      Typ: [String, Array],
	      Standard: „Codelisten, Bildmedientabelle, Wortanzahl, Einzug2“
	    ,
        Symbolleiste:
	      Typ: [String, Array],
	      Standard:
	        "Code | Zeilenhöhe | Rückgängig machen, Wiederherstellen | Schriftgrößenauswahl | Schriftauswahl | Formatauswahl | fett, kursiv, Vordergrundfarbe, Hintergrundfarbe | links ausrichten, zentriert ausrichten, rechts ausrichten, Justieren | meinebenutzerdefinierteSymbolleistenschaltfläche | Bullist, Numlist, Ausrücken, Einrücken, Einrücken2em | Listen, Bild, Medientabelle | Format entfernen"
	    },
        Branding: falsch,
        Menüleiste: false,
        setup: editor => {
          lass _this = dies;
          editor.ui.registry.addButton("meinBenutzerdefinierterToolbarButton", {
            Text: "Schrumpfen",
            beiAktion: Funktion() {
              _diese.show= !_diese.show;
            }
          });
        }
      },

Schlüsselcode

Hier werden Pfeilfunktionen verwendet => um Eigenschaften und Ereignisse in Vue zu bedienen

 setup: editor => {
    lass _this = dies;
    editor.ui.registry.addButton("meinBenutzerdefinierterToolbarButton", {
      Text: "Schrumpfen",
      beiAktion: Funktion() {
        _diese.show= !_diese.show;
      }
    });
  }

Dies ist das Ende dieses Artikels über die Verwendung von Tinymce Rich Text zum Anpassen von Symbolleistenschaltflächen in Vue. Weitere relevante Inhalte zur benutzerdefinierten Vue Tinymce-Symbolleiste finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue verwendet den Rich-Text-Editor Vue-Quill-Editor (einschließlich benutzerdefiniertem Bild-Upload-Dienst, klarem Kopier- und Einfügestil usw.)
  • Vue+Element UI+vue-quill-editor Rich-Text-Editor und benutzerdefinierte Bildeinfügung

<<:  Diskussion zu den Themen Bildschaltflächenübermittlung und wiederholte Formularübermittlung

>>:  Lösung für das Problem, dass die vertikale Zentrierung des Flex-Innenknopfs nicht zentriert ist

Artikel empfehlen

Detailliertes Tutorial zum Löschen von Linux-Benutzern mit dem Befehl userdel

Was ist Serdel userdel ist ein Low-Level-Tool zum...

Müssen die Texte der Website noch gestaltet werden?

Viele fragen sich vielleicht: Muss der Text auf d...

Tutorial-Diagramm zur Konfiguration der Tomcat-Umgebungsvariablen unter Win10

Vor der Konfiguration müssen wir Folgendes tun: 1...

Der einfachste Weg, das MySQL-Root-Passwort zurückzusetzen

Meine MySQL-Version ist MySQL V5.7.9, bitte verwe...

Zusammenfassung häufiger Probleme mit MySQL-Indizes

F1: Welche Indizes hat die Datenbank? Was sind di...

Implementierungscode für die HTML-Tabellenrahmensteuerung

Wenn wir eine Tabelle verwenden, weisen wir ihr i...

So installieren Sie die Linux-Onlinesoftware gcc online

Befehle zur Linux-Onlineinstallation: yum install...

So generieren Sie PDFs und laden sie im Vue-Frontend herunter

Inhaltsverzeichnis 1. Installation und Einführung...

Referenz zur MySQL-Optimierungslösung

Probleme, die bei der Optimierung auftreten könne...

28 berühmte Beispiele für Blog-Redesigns

1. WebDesignerWall 2. Veerles Blog 3. Lernprogram...

Spezifische Verwendung des Linux-gcc-Befehls

01. Befehlsübersicht Der Befehl gcc verwendet den...

MySQL-Sortierung zum Abrufen eines Ranking-Beispielcodes

Der Code sieht folgendermaßen aus: SELECT @i:=@i+...

Zusammenfassung von fünf Befehlen zum Überprüfen des Swap-Speichers in Linux

Vorwort Unter Linux können zwei Arten von Swap-Sp...