リッチ テキスト エディターは数多くありますが、人気のあるものとしては、UEditor、kindeditor、CKEditor などがあります。しかし、今日は tniyMCE のプラグイン開発を実装します。 tinymce、tinymce ts、tinymce-vue 宣言ファイルをインストールするnpm をインストール tinymce -S npm インストール @types/tinymce -S npm をインストールします @tinymce/tinymce-vue -S パッケージコンポーネント<テンプレート> <div> <エディター:id="id" v-model="content" :init="init"></エディター> </div> </テンプレート> <script lang="ts"> 'vue-property-decorator' から { Component、Prop、Vue、Watch } をインポートします。 'tinymce' から tinymce をインポートします。 '@tinymce/tinymce-vue' から Editor をインポートします。 'tinymce/themes/silver/theme' をインポートします。 'tinymce/plugins/image' をインポートします。 'tinymce/plugins/link' をインポートします。 'tinymce/plugins/code' をインポートします。 'tinymce/plugins/table' をインポートします。 'tinymce/plugins/lists' をインポートします。 'tinymce/plugins/contextmenu' をインポートします。 'tinymce/plugins/wordcount' をインポートします。 'tinymce/plugins/colorpicker' をインポートします。 'tinymce/plugins/textcolor' をインポートします。 'tinymce/plugins/media' をインポートします。 'tinymce/plugins/fullscreen' をインポートします。 'tinymce/plugins/preview' をインポートします。 'tinymce/plugins/pagebreak' をインポートします。 'tinymce/plugins/insertdatetime' をインポートします。 'tinymce/plugins/hr' をインポートします。 'tinymce/plugins/paste' をインポートします。 'tinymce/plugins/codesample' をインポートします。 'tinymce/icons/default/icons' をインポートします。 コンソールにログ出力します。 @Component({ name: 'TinymceEditer', components: { エディター } }) エクスポートデフォルトクラスはVueを拡張します{ //プロパティIDを設定する @Prop({ デフォルト: 'vue-tinymce-' + +new Date() }) id!: 文字列; //デフォルトの高さ @Prop({ default: 300 }) height!: number; @Prop({ デフォルト: '' }) プライベート値!: 文字列; プライベートコンテンツ: 文字列 = ''; @Watch('値') プライベートonChangeValue(newVal: 文字列) { this.content = newVal; } @Watch('コンテンツ') プライベートonChangeContent(newVal: 文字列) { this.$emit('input', newVal); } //リッチテキストボックスの初期化構成 private get init() { 戻る { セレクター: '#' + this.id, //リッチテキストエディターID language: 'zh_CN', //言語language_url: '/tinymce/zh_CN.js', //言語パッケージkin_url: '/tinymce/skins/ui/oxide', //エディターが正しく動作するにはスキンが必要なので、前にコピーしたスキンファイルを指すように skin_url を設定しますmenubar: false, //メニューバーplugins: 'リンク リスト 画像 コード テーブル カラーピッカー テキストカラー 単語数 コンテキストメニュー メディア テーブル 全画面プレビュー ページブレーク 挿入日時 時間 貼り付け コードサンプル 絵文字', //プラグイン ツールバー: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : //実行をインスタンス化 init_instance_callback: (editor: any) => { this.content && editor.setContent(this.content); //this.hasInit = true editor.on('NodeChange KeyUp SetContent を変更', () => { //this.hasChange = true コンテンツを編集します。 }); }, //ビデオ設定コールバック video_template_callback: (data: any) => { `<ビデオ幅=" を返します ${data.width} " 高さ="${data.height}" ${data.poster ? 'poster="' + data.poster + '"' : ''} コントロール="コントロール"> <ソース src="${data.source}"/> </ビデオ>`; }, // 画像を貼り付けるコールバック images_upload_handler: (blobInfo: any, success: Function, failure: Function) => { this.handleImgUpload(blobInfo、成功、失敗); }, }; } プライベートマウント() { this.content = this.value; } //写真をアップロード private handleImgUpload(blobInfo: any, success: Function, failure: Function) { this.$emit('upload', blobInfo, success, failure); } } </スクリプト> <スタイル lang="scss"> .tox-tinymce-aux { z-index: 3000 !重要; } </スタイル> コンポーネントの使用<テンプレート> <tinymce v-model="コンテンツ" /> </テンプレート> <script lang="ts"> 'vue-property-decorator' から Component、Vue } をインポートします。 '@/components/tinymce/tinymce.vue' から Tinymce をインポートします。 @成分({ コンポーネント: ティニムス、 }, }) エクスポートデフォルトクラスはVueを拡張します{ プライベートコンテンツ: 文字列 = ''; } </スクリプト> <style lang="scss" スコープ></style> Vue は Tinymce リッチテキストエディタを使用してツールバーボタンをカスタマイズします
初期化: { 言語: "zh_CN", スキンのURL: "/tinymce/skins/ui/oxide", 高さ: "100%", フォントサイズ形式: "8pt 10pt 12pt 14pt 16pt 18pt 24pt 36pt", フォントフォーマット: "Microsoft YaHei=Microsoft YaHei;Founder FangSong_GBK=Founder FangSong_GBK;Songti=simsun,serif;FangSongti=FangSong,serif;Boldti=SimHei;Times New Roman=Times New Roman;", プラグイン: { タイプ: [文字列、配列], デフォルト: "コード リスト 画像 メディア テーブル 単語数 インデント 2em" 、 ツールバー: タイプ: [文字列、配列], デフォルト: 「コード | 行の高さ | 元に戻す やり直し | フォントサイズ選択 | フォント選択 | 形式選択 | 太字 斜体 前景色 背景色 | alignleft aligncenter alignright alignjustify | myCustomToolbarButton | 箇条書き 数値リスト アウトデント インデント indent2em | リスト 画像 メディア テーブル | 形式を削除」 }, ブランディング: 偽、 メニューバー: false、 セットアップ: エディター => { _this = this とします。 editor.ui.registry.addButton("myCustomToolbarButton", { テキスト:「縮小」、 onAction: 関数() { _this.show= !_this.show; } }); } }, キーコード
セットアップ: エディター => { _this = this とします。 editor.ui.registry.addButton("myCustomToolbarButton", { テキスト:「縮小」、 onAction: 関数() { _this.show= !_this.show; } }); } これで、Tinymce リッチ テキストを使用して Vue のツールバー ボタンをカスタマイズする実践に関するこの記事は終了です。Vue Tinymce カスタム ツールバーの関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 画像ボタン送信とフォーム繰り返し送信の問題に関する議論
>>: フレックスインサイドボタンの垂直方向の中央揃えが中央揃えにならない問題の解決方法
について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...
目次概要単一ファイルコンポーネント基本概念シンプルなローダーコンポーネントコンテンツの解析コンポーネ...
目次1. Dockerをインストールする2. コードを書く3. Dockerfileを書く4. 画像...
nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...
1. 目的この記事を通じて、誰もがフロートをクリアする原理と方法を理解し、最終的にこの記事が最良であ...
目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...
Code Cloud を使用して Git コード ストレージ ウェアハウスを構築するhttps://...
MySQLの起動失敗の解決策MySQLを起動できませんmysqlを停止した後、いくつかの操作(ホスト...
nginx をコンパイルしてインストールし、一定期間使用した後、現在のバージョンに脆弱性があることや...
MySQLにおける静的変数の役割の詳細な説明静的変数の使用 静的変数サンプルコード: 関数テスト()...
目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...
ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...
目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...
目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...
この記事は、2018 年 9 月 19 日に Adobe Systems Inc で開催された ...