sponsored links

微信小程式editor富文字編輯器的使用,拿走不謝

序言:對於商品的上傳,我們大多數都是在PC端的後臺,因為這樣管理起來更加的方便也高效,但就是有一些客戶的需求是想要在手機端實現簡單的上傳,那麼此時就需要用到一款富文字編輯器,恰好小程式表單元件中就自帶editor富文字編輯器,讓我們一塊來學習一下吧。

要是對大家有幫助的話麻煩給點贊轉發一下。

功能介紹

文件地址:https://developers.weixin.qq.com/miniprogram/dev/component/editor.html

微信小程式editor富文字編輯器的使用,拿走不謝

整合之後的頁面:

微信小程式editor富文字編輯器的使用,拿走不謝

程式碼使用

wxml:


<view class="container" style="height:{{editorHeight}}px;">
  <editor id="editor" class="ql-container" placeholder="{{placeholder}}" bindstatuschange="onStatusChange" bindready="onEditorReady">
  </editor>
</view>

<view class="toolbar" catchtouchend="format" hidden="{{keyboardHeight > 0 ? false : true}}" style="bottom: {{isIOS ? keyboardHeight : 0}}px">
  <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>

wxss:

@import "../common/lib/weui.wxss";
@import "./assets/iconfont.wxss";

.container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
}

.ql-container {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  font-size: 16px;
  line-height: 1.5;
  overflow: auto;
  padding: 10px 10px 20px 10px;
  border: 1px solid #ECECEC;
}

.ql-active {
  color: #22C704;
}

.iconfont {
  display: inline-block;
  width: 30px;
  height: 30px;
  cursor: pointer;
  font-size: 20px;
}

.toolbar {
  box-sizing: border-box;
  padding: 0 10px;
  height: 50px;
  width: 100%;
  position: fixed;
  left: 0;
  right: 100%;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1px solid #ECECEC;
  border-left: none;
  border-right: none;
}

css引用的兩處外鏈在文章最後面我會給出下載地址。

js:

Page({
  data: {
    formats: {},
    readOnly: false,
    placeholder: '開始輸入...',
    editorHeight: 300,
    keyboardHeight: 0,
    isIOS: false
  },
  readOnlyChange() {
    this.setData({
      readOnly: !this.data.readOnly
    })
  },
  onLoad() {
    const platform = wx.getSystemInfoSync().platform
    const isIOS = platform === 'ios'
    this.setData({ isIOS})
    const that = this
    this.updatePosition(0)
    let keyboardHeight = 0
    wx.onKeyboardHeightChange(res => {
      if (res.height === keyboardHeight) return
      const duration = res.height > 0 ? res.duration * 1000 : 0
      keyboardHeight = res.height
      setTimeout(() => {
        wx.pageScrollTo({
          scrollTop: 0,
          success() {
            that.updatePosition(keyboardHeight)
            that.editorCtx.scrollIntoView()
          }
        })
      }, duration)

    })
  },
  updatePosition(keyboardHeight) {
    const toolbarHeight = 50
    const { windowHeight, platform } = wx.getSystemInfoSync()
    let editorHeight = keyboardHeight > 0 ? (windowHeight - keyboardHeight - toolbarHeight) : windowHeight
    this.setData({ editorHeight, keyboardHeight })
  },
  calNavigationBarAndStatusBar() {
    const systemInfo = wx.getSystemInfoSync()
    const { statusBarHeight, platform } = systemInfo
    const isIOS = platform === 'ios'
    const navigationBarHeight = isIOS ? 44 : 48
    return statusBarHeight + navigationBarHeight
  },
  onEditorReady() {
    const that = this
    wx.createSelectorQuery().select('#editor').context(function (res) {
      that.editorCtx = res.context
    }).exec()
  },
  blur() {
    this.editorCtx.blur()
  },
  format(e) {
    let { name, value } = e.target.dataset
    if (!name) return
    // console.log('format', name, value)
    this.editorCtx.format(name, value)

  },
  onStatusChange(e) {
    const formats = e.detail
    this.setData({ formats })
  },
  insertDivider() {
    this.editorCtx.insertDivider({
      success: function () {
        console.log('insert divider success')
      }
    })
  },
  clear() {
    this.editorCtx.clear({
      success: function (res) {
        console.log("clear success")
      }
    })
  },
  removeFormat() {
    this.editorCtx.removeFormat()
  },
  insertDate() {
    const date = new Date()
    const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
    this.editorCtx.insertText({
      text: formatDate
    })
  },
  insertImage() {
    const that = this
    that.blur();
    wx.showLoading({
      title: '載入中…',
    })
    setTimeout(function(){
      wx.hideLoading();
      wx.chooseImage({
        count: 1,
        success: function (res) {
          that.editorCtx.insertImage({
            src: res.tempFilePaths[0],
            data: {
              id: 'abcd',
              role: 'god'
            },
            width: '80%',
            success: function () {
              console.log('insert image success')
            }
          })
        }
      })
    },500);
  }
})

整體的目錄結構:

微信小程式editor富文字編輯器的使用,拿走不謝

富文字編輯器在開發者工具上無法演示,必須要執行到手機上才能檢視效果。

微信小程式editor富文字編輯器的使用,拿走不謝

示例程式碼:

微信小程式editor富文字編輯器的使用,拿走不謝

有需要程式碼的可以透過執行示例程式碼在開發者工具中獲取。

富文字編輯器中的方法api介紹

文件地址:https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.html

微信小程式editor富文字編輯器的使用,拿走不謝

比如如何上傳圖片、如何設定編輯器的內容、如何獲取編輯器的內容等等,其實主要的一點就是要獲取編輯器的內容,然後傳到後臺資料庫中。

獲取編輯器內容的程式碼:

that.editorCtx.getContents({
      success(res){
        var description = res['html'];//詳情
        wx.request({
          url: HTTP_REQUEST_URL+'/api/user/product_create',
          data: {
          },
          method: 'POST',
          dataType:'json',
          header: header,
          success: function (res) {
            var data = res['data'];
            if(data['code']==200){
            }else{
            }
          },
          fail: function (res) {
          },
        });
      }
    })

總結:

小程式的富文字編輯器可以實現上傳圖片、文字的基本操作、排序等等功能,對於普通的使用者來說,只要能夠輸入文字、可以上傳圖片進行排版就能解決基本需求了。

上篇文章我講到在使用編輯器上傳圖片是會有樣式問題

微信小程式editor富文字編輯器的使用,拿走不謝

如果有朋友在使用過程中恰好遇到了此類問題,可以去看下我昨天發的文章。微信小程式內建editor編輯器上傳圖片wx.chooseImage樣式問題


我是小程式軟體開發,每天分享開發過程中遇到的知識點,如果對你有幫助的話,幫忙點個贊再走唄,非常感謝。

往期文章分享:

程式設計師搞笑的段子,總有一條戳中你的笑點

微信小程式授權登入適配wx.getUserProfile最新程式碼

分類: 收藏
時間: 2021-11-10

相關文章

她是他的合夥人,也是他發小的妻子,直到發小因公殉職-下

她是他的合夥人,也是他發小的妻子,直到發小因公殉職-下
文:冰糖丞丞|圖:網路 前情提要:丈夫因公殉職後,莊妍被查出懷了丈夫的遺腹子.杜思衡是莊妍丈夫的好哥們,也是莊妍的合夥人,他在照顧莊妍懷孕產子的過程中,逐漸愛上了她.莊妍生下孩子後,準備和爺爺一起去加 ...

憶小黃。。
第一次看到小黃,我是去天台曬衣服,她保持一米距離看著我,我以為是誰家的小狗跟著主人上天台玩,第二次看到小黃,都是一週後了,我再去天台曬衣服.小黃還是看著我,還是保持一米距離,我感覺不對頭,就拍了她的照 ...

明日中秋,10道家常菜吃起來,簡單又營養足,比大魚大肉還要下飯

明日中秋,10道家常菜吃起來,簡單又營養足,比大魚大肉還要下飯
"明日中秋,10道家常菜吃起來,簡單又營養足,比大魚大肉還要下飯."明日中秋,大團圓的日子裡,一定少不了頓溫馨的家宴,中秋家宴準備什麼菜譜好?今天阿九分享十道美味的佳餚,每一道都實 ...

餐飲老闆為什麼不自建外賣小程式?避免美團抽點
餐飲老闆為什麼不自建外賣小程式?避免美團抽點,相信很多餐飲老闆都思考過這個問題,筆者覺得原因如下: 技術難度太大,開發成本就更不用提了.但是購買開發好的外賣小程式是可以的,比如咱家. 外賣店苦美團久矣 ...

榮耀線下門店流量輸給小米,轉轉二手進入商超,價效比依然是賣點

榮耀線下門店流量輸給小米,轉轉二手進入商超,價效比依然是賣點
最近家門口新開了一家天街,中秋假期的時候和家人一起去逛了逛,人真的是超級多.雖然最近幾年電商平臺的飛速發展,大大擠壓了線下商場的流量,但對於各個品牌來說,線下依然是重要的戰略目標之一. 對於一個數碼博 ...

分享七道清淡的家常小炒,清腸道,去油脂,顏值高還超下飯

分享七道清淡的家常小炒,清腸道,去油脂,顏值高還超下飯
中秋節已經過去,大魚大肉吃了不少,現在,我們需要多吃一點清淡的蔬菜來給我們清清腸道,去去油脂了.分享七道清淡小炒,簡單好做顏值高,清腸道,去油脂,為我們的健康保駕護航. [清炒藕絲]做法如下: 食材準 ...

小平訪日:外相登機迎接,天皇間接道歉,日本驚呼“矮個子巨人”

小平訪日:外相登機迎接,天皇間接道歉,日本驚呼“矮個子巨人”
1978年10月22日,一架尾翼上漆有紅五星的中國三叉戟軍用飛機,徐徐降落在日本東京羽田機場. 這是鄧小平應日本政府的邀請,前往日本出席互換<中日和平友好條約>批准書儀式,並對日本進行正式 ...

四年級下數學習題(關注,後續還有教育習題)
一."數學萬花筒" (每空1分,共24分) 1.一粒黃豆約重0.35克, 0.35中的5在( )位上,表示( )個( ). 2.一隻蝙蝠約重3.9克,3.9裡面有( )個0.1. ...

山東小夥子小葛
那是15 ,6年前的事了,直到如今,我還時常會想起小葛的當年,很讚賞這位憨厚墩實的山東小夥子. 那天早上我剛一上班,耳邊聽到一聲"報告",抬頭一看是小葛,小葛是我們單位的安保隊員, ...

熒光品種能否成為紙幣的主流收藏

熒光品種能否成為紙幣的主流收藏
大家好,我是大佳收藏,分享收藏樂趣,傳播錢幣文化,感謝關注! 三版玩水印,四版玩熒光,這是紙幣收藏中一個大家預設的玩法:這裡我們就來聊聊熒光品種的玩法,它能否成為一種主流的玩法,或者會不會在紙幣收藏中 ...

上天了!指尖文創釋出「星覓」主題鍵帽

上天了!指尖文創釋出「星覓」主題鍵帽
指尖文創作為一個新銳鍵帽品牌,算是比較高產了.除了標誌性奶油布丁鍵帽.尖峰布丁鍵帽.「奶蓋」鍵帽,以及前段時間所釋出的Gulf Racing賽車手鍵帽. 今天,指尖文創接著宣佈推出全新主題設計的「星覓 ...

10月份四版幣行情速遞!這些品種漲了
從去年以來,收藏市場上很多品種呈現出了不錯的漲幅.就連一直跌跌不休的四版幣也漲了很多. 小全套上漲 2018年退市之後,四版幣掀起一波熱潮,市場成交價直線上升,小全套批次成交最低都得700多元一套. ...

顏值與手感並存,Darmoshark K5 雙模機械鍵盤分享
Darmoshark 作為摩豹旗下專注高階外設產品的子品牌,它出新品的頻率相對來說並不算高,但每一款產品都能看出投入了大量的心血,無一不是細節滿滿.前不久,Darmoshark推出了全新的K5無線雙模 ...

尋找最適合你的鍵盤61、84、87、98雙十一各配列機械鍵盤選購指南
如今大家玩機械鍵盤除了玩客製化.玩鍵帽.玩軸體.玩改造,不同的配列也是十分值得體驗的.從最初的只有104.108兩種全鍵盤的常規配列,到出現87這種簡單的砍掉數字區再到只留下主鍵區的61配列,再到後續 ...

燃氣熱水器哪個牌子好又實惠?最受歡迎的十大燃氣熱水器品牌

燃氣熱水器哪個牌子好又實惠?最受歡迎的十大燃氣熱水器品牌
燃氣熱水器就是採用燃氣作為主要能源材料,透過燃氣燃燒產生的高溫熱量傳遞到流經熱交換器的冷水中以達到製備熱水目的的一種熱水器. 在我們日常生活中,隨著社會的快速發展,生活家電也越來越齊全,比如空調,電視 ...

土耳其有何苦大仇深,不讓瓦良格號通行,要10億,列20項措施

土耳其有何苦大仇深,不讓瓦良格號通行,要10億,列20項措施
2012年9月25日,當初的蘇聯瓦良格號航母正式改成了中國名:遼寧號,並交付中國海軍,入列服役,至此中國的百年航母夢終於實現了. 遼寧號能進入中國海軍服役,得益於蘇聯解體,蘇聯解體後,烏克蘭和俄羅斯曾 ...

分享10道適合秋天吃的菜,葷素搭配營養全,好吃又好做,順利度秋

分享10道適合秋天吃的菜,葷素搭配營養全,好吃又好做,順利度秋
秋天,分享10道家常下飯菜,順應時節貼秋膘,好吃好做,順利度秋.入秋後天涼了,又到了一年的貼秋膘進補時節了,這個時候我們就要吃一些滋補的食物,給身體補充營養和能量,除此之外呢,入秋後還有秋燥天的影響, ...

錢幣收藏品各種不同的玩法

錢幣收藏品各種不同的玩法
大家好,我是大佳收藏,分享收藏樂趣,傳播錢幣文化,感謝關注! 收藏錢幣的方法有很多種,從材質上就有兩種:一種是金屬幣,一種是紙幣:金屬的玩法相對比較簡單,大概就幾種,有年份的收藏,就是針對某個比較稀缺 ...

日版豐田卡羅拉Cross釋出 提供兩種動力

日版豐田卡羅拉Cross釋出 提供兩種動力
近日,我們從相關渠道瞭解到,日版豐田卡羅拉Cross釋出,新車在日本的售價為199.9萬日元(約合11.7萬元人民幣)起.事實上,新車在去年7月首次亮相,今年6月美版釋出,而有訊息稱,新車未來將會引入 ...

科學前沿12:發現一類理想的超滑體系:大晶格失配範德華異質介面

科學前沿12:發現一類理想的超滑體系:大晶格失配範德華異質介面
當前,因摩擦和磨損導致的能源損耗約佔人類能源總消耗的三分之一.實現極低摩擦不僅可以降低能源消耗同時可以延長機械壽命.超滑(superlubliricty)定義為兩個固體表面接觸時摩擦力接近於零(摩擦係 ...