最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue使用Tinymce富文本自定義toolbar按鈕的實踐

 更新時間:2021年12月07日 10:49:35   作者:阿雷前進中...  
本文主要介紹了Vue使用Tinymce富文本自定義toolbar按鈕,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

富文本編輯器有很多,流行的有UEditor , kindeditor, CKEditor 等等。但今天我們來實現tniyMCE 的插件開發(fā)。

安裝tinymce、tinymce ts、tinymce-vue聲明文件

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

封裝組件

<template>
    <div>
        <editor :id="id" v-model="content" :init="init"></editor>
    </div>
</template>

<script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';

import tinymce from 'tinymce';
import Editor from '@tinymce/tinymce-vue';

import 'tinymce/themes/silver/theme';
import 'tinymce/plugins/image';
import 'tinymce/plugins/link';
import 'tinymce/plugins/code';
import 'tinymce/plugins/table';
import 'tinymce/plugins/lists';
import 'tinymce/plugins/contextmenu';
import 'tinymce/plugins/wordcount';
import 'tinymce/plugins/colorpicker';
import 'tinymce/plugins/textcolor';
import 'tinymce/plugins/media';
import 'tinymce/plugins/fullscreen';
import 'tinymce/plugins/preview';
import 'tinymce/plugins/pagebreak';
import 'tinymce/plugins/insertdatetime';
import 'tinymce/plugins/hr';
import 'tinymce/plugins/paste';
import 'tinymce/plugins/codesample';
import 'tinymce/icons/default/icons';

console.log(tinymce);

@Component({ name: 'TinymceEditer', components: { Editor } })
export default class extends Vue {
    //設置prop id
    @Prop({ default: 'vue-tinymce-' + +new Date() }) id!: string;
 
 //默認高度
    @Prop({ default: 300 }) height!: number;

    @Prop({ default: '' })
    private value!: string;

    private content: string = '';

    @Watch('value')
    private onChangeValue(newVal: string) {
        this.content = newVal;
    }

    @Watch('content')
    private onChangeContent(newVal: string) {
        this.$emit('input', newVal);
    }

    //富文本框init配置
    private get init() {
        return {
            selector: '#' + this.id, //富文本編輯器的id
            language: 'zh_CN', //語言
            language_url: '/tinymce/zh_CN.js', //語言包
            skin_url: '/tinymce/skins/ui/oxide', //編輯器需要一個skin才能正常工作,所以要設置一個skin_url指向之前復制出來的skin文件
            menubar: false, //菜單條
            plugins:
                'link lists image code table colorpicker textcolor wordcount contextmenu  media table fullscreen preview pagebreak insertdatetime hr paste codesample emoticons', //插件
            toolbar:
                'bold italic underline strikethrough  | fontselect | fontsizeselect | formatselect  | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | removeformat| undo redo | link unlink image media insertdatetime table  hr pagebreak codesample | code fullscreen preview', //工具條
            font_formats: 'Arial=arial,helvetica,sans-serif; 宋體=SimSun;  微軟雅黑=Microsoft Yahei; Impact=impact,chicago;', //字體
            fontsize_formats: '11px 12px 14px 16px 18px 24px 36px 48px 64px 72px', //文字大小
            height: this.height, //高度
            branding: false, //水印
            elementpath: false, //底部元素路徑
            paste_data_images: true, //允許粘貼圖片
            //初始化前執(zhí)行
            setup: (editor: any) => {},
            //實例化執(zhí)行
            init_instance_callback: (editor: any) => {
                this.content && editor.setContent(this.content);

                //this.hasInit = true
                editor.on('NodeChange Change KeyUp SetContent', () => {
                    //this.hasChange = true
                    this.content = editor.getContent();
                });
            },

            //視頻設置回調
            video_template_callback: (data: any) => {
                return `<video width="
                    ${data.width} " height="${data.height}"
                    ${data.poster ? 'poster="' + data.poster + '"' : ''}
                    controls="controls">
                    <source src="${data.source}"/>
                </video>`;
            },

            //粘貼圖片回調
            images_upload_handler: (blobInfo: any, success: Function, failure: Function) => {
                this.handleImgUpload(blobInfo, success, failure);
            },
        };
    }

    private mounted() {
        this.content = this.value;
    }

    //上傳圖片
    private handleImgUpload(blobInfo: any, success: Function, failure: Function) {
        this.$emit('upload', blobInfo, success, failure);
    }
}
</script>

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

組件使用

<template>
   <tinymce v-model="content" />
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import Tinymce from '@/components/tinymce/tinymce.vue';

@Component({
    components: {
        Tinymce,
    },
})
export default class extends Vue {
    private content: string = '';
}
</script>

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

Vue使用Tinymce富文本編輯器自定義toolbar按鈕

在這里插入圖片描述

這里我增加了收縮的按鈕

 init: {
        language: "zh_CN",
        skin_url: "/tinymce/skins/ui/oxide",
        height: "100%",
        fontsize_formats: "8pt 10pt 12pt 14pt 16pt 18pt 24pt 36pt",
        font_formats:
          "微軟雅黑=Microsoft YaHei;方正仿宋_GBK=方正仿宋_GBK;宋體=simsun,serif;仿宋體=FangSong,serif;黑體=SimHei;Times New Roman=Times New Roman;",
        plugins: {
	      type: [String, Array],
	      default: "code lists image media table wordcount indent2em"
	    ,
        toolbar:  {
	      type: [String, Array],
	      default:
	        "code | lineheight | undo redo | fontsizeselect | fontselect |  formatselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | myCustomToolbarButton | bullist numlist outdent indent indent2em| lists image media table | removeformat"
	    },
        branding: false,
        menubar: false,
        setup: editor => {
          let _this = this;
          editor.ui.registry.addButton("myCustomToolbarButton", {
            text: "收縮",
            onAction: function() {
              _this.show= !_this.show;
            }
          });
        }
      },

關鍵代碼

這里使用 箭頭函數 => 即可操作vue中屬性和事件

 setup: editor => {
    let _this = this;
    editor.ui.registry.addButton("myCustomToolbarButton", {
      text: "收縮",
      onAction: function() {
        _this.show= !_this.show;
      }
    });
  }

到此這篇關于Vue使用Tinymce富文本自定義toolbar按鈕的實踐的文章就介紹到這了,更多相關Vue Tinymce自定義toolbar 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 怎樣在vue項目下添加ESLint的方法

    怎樣在vue項目下添加ESLint的方法

    這篇文章主要介紹了怎樣在vue項目下添加ESLint的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 淺談針對Vue相同路由不同參數的刷新問題

    淺談針對Vue相同路由不同參數的刷新問題

    這篇文章主要介紹了淺談針對Vue相同路由不同參數的刷新問題,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue項目中使用addRoutes出現問題的解決方法

    Vue項目中使用addRoutes出現問題的解決方法

    大家應該都知道可以通過vue-router官方提供的一個api-->addRoutes可以實現路由添加的功能,事實上就也就實現了用戶權限,這篇文章主要給大家介紹了關于Vue項目中使用addRoutes出現問題的解決方法,需要的朋友可以參考下
    2021-08-08
  • 超詳細的vue組件間通信總結

    超詳細的vue組件間通信總結

    作為一個vue初學者不得不了解的就是組件間的數據通信(暫且不談vuex),通信方式根據組件之間的關系有不同之處,這篇文章主要給大家介紹了關于vue組件間通信的相關資料,需要的朋友可以參考下
    2021-07-07
  • vue中的keep-alive詳解與應用場景

    vue中的keep-alive詳解與應用場景

    keep-alive是vue中的內置組件,能在組件切換過程中將狀態(tài)保留在內存中,防止重復渲染DOM,本文給大家介紹vue中的keep-alive詳解與應用場景,感興趣的朋友一起看看吧
    2023-11-11
  • vue跳轉同一個路由參數不同的問題

    vue跳轉同一個路由參數不同的問題

    這篇文章主要介紹了vue跳轉同一個路由參數不同的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue+vuex+axios+echarts畫一個動態(tài)更新的中國地圖的方法

    vue+vuex+axios+echarts畫一個動態(tài)更新的中國地圖的方法

    本篇文章主要介紹了vue+vuex+axios+echarts畫一個動態(tài)更新的中國地圖的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 使用vue-router完成簡單導航功能【推薦】

    使用vue-router完成簡單導航功能【推薦】

    vue-router是Vue.js官方提供的一套專用的路由工具庫。這篇文章主要介紹了使用vue-router完成簡單導航功能,需要的朋友可以參考下
    2018-06-06
  • 利用Vue.js制作一個拼圖華容道小游戲

    利用Vue.js制作一個拼圖華容道小游戲

    這篇文章主要為大家詳細介紹了如何利用Vue.js編寫一個拼圖華容道游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue路由跳轉問題記錄詳解

    Vue路由跳轉問題記錄詳解

    本篇文章主要介紹了Vue路由跳轉問題記錄詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

徐水县| 四子王旗| 宕昌县| 福安市| 都昌县| 平乡县| 翁源县| 鄂托克前旗| 永吉县| 上蔡县| 同仁县| 葫芦岛市| 濮阳市| 镇雄县| 合山市| 毕节市| 庆城县| 贵南县| 马龙县| 新田县| 竹山县| 湘阴县| 黎平县| 镇雄县| 嫩江县| 女性| 武邑县| 布尔津县| 白银市| 呼图壁县| 嵊泗县| 宽甸| 丹棱县| 沂源县| 宝坻区| 日照市| 巨鹿县| 介休市| 安西县| 牙克石市| 旺苍县|