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

微信小程序中富文本編輯器的實(shí)現(xiàn)

 更新時(shí)間:2022年06月11日 10:04:50   作者:camellia  
富文本編輯器不同于文本編輯器,程序員可到網(wǎng)上下載免費(fèi)的富文本編輯器內(nèi)嵌于自己的網(wǎng)站或程序里。本文將詳解一下微信小程序中富文本編輯器的實(shí)現(xiàn)與使用,需要的可以參考一下

小程序也是有富文本編輯器這個(gè)控件的,別說(shuō),之前我還真沒(méi)注意。

官方文檔

官方文檔中給出的東西倒是不多,具體的代碼示例在下圖紅框中標(biāo)注的位置:

示例代碼大概是這個(gè)樣子:

通過(guò)官方的示例,我這邊大概了解了一下微信小程序editor的使用,我這里封裝了一個(gè)自定義組件:

效果如下圖所示:

功能展示大概就是這個(gè)樣子,我這里放一下我組件的全部代碼:

myEditor.js

// api 請(qǐng)求類(lèi)
const API = require("../../request/api.js").report;
// 公共函數(shù)庫(kù)
const utils = require("../../utils/util.js");
// 加密字符
const constant = require("../../utils/constant.js");
// 雙語(yǔ)字典
const languageUtils = require("../../language/languageUtils");
// 獲取應(yīng)用實(shí)例
const app = getApp();
Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    project_id: {
      type: Number,
      value: "",
    },
    //編輯器默認(rèn)提示語(yǔ)
    placeholder: {
      type: String,
      value: "開(kāi)始編輯吧...",
    },
    // 修改時(shí)顯示內(nèi)容
    richTextContents: {
      type: String,
      value: "",
    },
    // 編輯的富文本的索引
    index: {
      type: Number,
      value: 0,
    },
  },
  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    // 用戶(hù)手機(jī)鍵盤(pán)得高度,大于0表示打開(kāi)了鍵盤(pán)
  },
  /**
   * 組件的方法列表
   */
  methods: {
    /**
     * @name: 編輯器初始化完成時(shí)觸發(fā)
     * @author: camellia
     * @date: 20211220
     */
    onEditorReady() {
      let self = this;
      this.triggerEvent("onEditorReady");
      // 獲取編輯器實(shí)例
      self
        .createSelectorQuery()
        .select("#editor")
        .context((res) => {
          self.editorCtx = res.context;
          self.setContents(self.properties.richTextContents); //設(shè)置富文本內(nèi)容
        })
        .exec();
    },
    /**
     * @name: 點(diǎn)擊工具欄格式化編輯文本
     * @author: camellia
     * @date: 20211220
     */
    format(e) {
      let self = this;
      let { name, value } = e.target.dataset;
      // 富文本編輯器格式化內(nèi)容方法
      self.editorCtx.format(name, value);
    },
    /**
     * @name: 工具欄選項(xiàng)選中,圖標(biāo)出現(xiàn)選中樣式
     * @author: camellia
     * @date: 20211220
     */
    onStatusChange(e) {
      let self = this;
      self.setData({
        formats: e.detail,
      });
    },
    /**
     * @name: 設(shè)置富文本內(nèi)容
     * @author: camellia
     * @date: 2021-12-23
     * @param:	rechtext	string	富文本內(nèi)容
     */
    setContents(rechtext) 
    {
      this.editorCtx.setContents({
        html: rechtext,
        success: (res) => {
          // 富文本內(nèi)容設(shè)置成功
          // console.log("[setContents success]", res);
        },
      });
    },
    /**
     * @name: 富文本編輯器輸入時(shí),獲取值
     * @author: camellia
     * @date: 20211220
     */
    getEditorContent() 
    {
      let self = this;
      // 富文本編輯器獲取內(nèi)容方法
      self.editorCtx.getContents({
        success: (res) => {
          let array = [];
          array["html"] = res.html;
          array["index"] = self.properties.index;
          // 通過(guò)自定義事件把內(nèi)容傳到父組件
          self.triggerEvent("getEditorValue", array);
        },
      });
    },
    
  },
});

myEditor.json

{
  "component": true,
  "usingComponents": {}
}

myEditor.wxss

@import "./icon/icon.wxss";

.ql-container{
    padding: 12rpx;
    border: 1rpx solid #707070;

}
/* 工具欄 */
.toolbar {
    z-index: 999;
    box-sizing: border-box;
    padding: 0 20rpx;
    height: 100rpx;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border: 2rpx solid #ECECEC;
    border-left: none;
    border-right: none;
    background-color: #FFFFFF;
}
/* 工具欄點(diǎn)擊時(shí)出現(xiàn)選中樣式 */
.ql-active {
    color:  #22C704;
}

myEditor.wxml

<view class="toolbar" catchtouchend="format">
      <i class="iconfont icon-charutupian" catchtouchend="insertImage"></i> 
      <i class="iconfont icon-format-header-2 {{formats.header === 2 ? 'ql-active' : ''}}" data-name="header" data-value="{{2}}"></i>
      <i class="iconfont icon-format-header-3 {{formats.header === 3 ? 'ql-active' : ''}}" data-name="header" data-value="{{3}}"></i>
      <i class="iconfont icon-zitijiacu {{formats.bold ? 'ql-active' : ''}}" data-name="bold"></i>
      <i class="iconfont icon-zitixieti {{formats.italic ? 'ql-active' : ''}}" data-name="italic"></i>
      <i class="iconfont icon-zitixiahuaxian {{formats.underline ? 'ql-active' : ''}}" data-name="underline"></i>
      <i class="iconfont icon--checklist" data-name="list" data-value="check"></i>
      <i class="iconfont icon-youxupailie {{formats.list === 'ordered' ? 'ql-active' : ''}}" data-name="list" data-value="ordered"></i>
      <i class="iconfont icon-wuxupailie {{formats.list === 'bullet' ? 'ql-active' : ''}}" data-name="list" data-value="bullet"></i>
</view>
<editor style="height:auto; min-height:240rpx;"  
        id="editor" 
        class="ql-container"
        bindinput="getEditorContent"
        bindready="onEditorReady"
        bindstatuschange="onStatusChange">
</editor>

以上就是微信小程序中富文本編輯器的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于小程序富文本編輯器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript中的偽數(shù)組用法及說(shuō)明

    JavaScript中的偽數(shù)組用法及說(shuō)明

    這篇文章主要介紹了JavaScript中的偽數(shù)組用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • JavaScript常見(jiàn)手寫(xiě)題超全匯總

    JavaScript常見(jiàn)手寫(xiě)題超全匯總

    作為前端開(kāi)發(fā),JS是重中之重,下面這篇文章主要給大家介紹了關(guān)于JavaScript常見(jiàn)手寫(xiě)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • JS實(shí)現(xiàn)向iframe中表單傳值的方法

    JS實(shí)現(xiàn)向iframe中表單傳值的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)向iframe中表單傳值的方法,涉及js針對(duì)頁(yè)面元素及表單屬性操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • JavaScript編寫(xiě)連連看小游戲

    JavaScript編寫(xiě)連連看小游戲

    這篇文章主要介紹了JavaScript編寫(xiě)連連看小游戲的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • javascript 文章截取部分無(wú)損html顯示實(shí)現(xiàn)代碼

    javascript 文章截取部分無(wú)損html顯示實(shí)現(xiàn)代碼

    近在做一些內(nèi)容搜索的工作,搜索出來(lái)的內(nèi)容為html格式,列表部分需要顯示每項(xiàng)內(nèi)容的一部分。
    2010-05-05
  • node.js 一個(gè)簡(jiǎn)單的頁(yè)面輸出實(shí)現(xiàn)代碼

    node.js 一個(gè)簡(jiǎn)單的頁(yè)面輸出實(shí)現(xiàn)代碼

    最近決定重拾node.js,用它來(lái)做一個(gè)合并JS文件的東西。由于忘得差不多了,先看能不能輸出一個(gè)頁(yè)面來(lái)再說(shuō)。以下是我的一些筆記,省得以后又忘凈光
    2012-03-03
  • javascript Blob對(duì)象實(shí)現(xiàn)文件下載

    javascript Blob對(duì)象實(shí)現(xiàn)文件下載

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • D3.js入門(mén)之D3?DataJoin的使用

    D3.js入門(mén)之D3?DataJoin的使用

    DataJoin(數(shù)據(jù)連接)是D3中很重要的一個(gè)概念。D3是基于數(shù)據(jù)操作DOM的js庫(kù),DataJoin使我們能夠根據(jù)現(xiàn)有?HTML?文檔中的數(shù)據(jù)集注入、修改和刪除元素。本文主要和大家詳細(xì)聊聊DataJoin的使用,感興趣的可以學(xué)習(xí)一下
    2022-11-11
  • 原生JS實(shí)現(xiàn)圖片左右輪播

    原生JS實(shí)現(xiàn)圖片左右輪播

    本文主要分享了原生JS實(shí)現(xiàn)圖片左右不停運(yùn)動(dòng)的完整示例代碼,可直接保存到HTML文檔打開(kāi)可以查看效果。下面跟著小編一起來(lái)看下吧
    2016-12-12
  • JS截取字符串常用方法整理及使用示例

    JS截取字符串常用方法整理及使用示例

    截取字符串的方法有很多,在使用過(guò)程中根據(jù)自己的實(shí)際需求進(jìn)行選擇,下面整理了一些常用的方法及使用示例,感興趣的朋友可以了解下
    2013-10-10

最新評(píng)論

鄂尔多斯市| 奉节县| 华亭县| 邻水| 台中县| 三穗县| 巨鹿县| 赤峰市| 泰来县| 阳山县| 濮阳县| 得荣县| 安宁市| 大渡口区| 隆化县| 孟连| 贵德县| 伽师县| 务川| 云南省| 中牟县| 浮梁县| 启东市| 吉木萨尔县| 建德市| 呼和浩特市| 长治市| 临城县| 昭觉县| 穆棱市| 长白| 宁国市| 昔阳县| 淮滨县| 白河县| 兴城市| 加查县| 宁国市| 丰都县| 葵青区| 德清县|