123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- Component({
- properties: {
- width: {
- type: String
- },
- height: {
- type: String
- },
- insertPicture: {
- type: Boolean,
- value: true
- },
- placeholder: {
- type: String,
- value: '输入文字...'
- }
- },
- data: {
- formats: {},
- readOnly: false,
- // editorHeight: 300,
- keyboardHeight: 0,
- isIOS: false
- },
- ready() {
- 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)
- })
- },
- methods: {
- readOnlyChange() {
- this.setData({
- readOnly: !this.data.readOnly
- })
- },
- updatePosition(keyboardHeight) {
- const toolbarHeight = 100
- 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
- //组件使用createSelectorQuery加上in(this)
- wx.createSelectorQuery().in(that).select('#editor').context(function(res) {
- that.editorCtx = res.context
- }).exec()
- },
- undo() {
- this.editorCtx.undo()
- },
- redo() {
- this.editorCtx.redo()
- },
- 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() {
- this.triggerEvent('insertImage'); //触发父组件方法
- },
- insertSrc(src) { //接受图片返回地址
- this.editorCtx.insertImage({
- src,
- data: {
- id: 'abcd',
- role: 'god'
- },
- width: '100%',
- fail: (err) => {
- console.log(`图片插入失败:${err}`);
- }
- })
- },
- getContent(e) { //获得文本内容
- this.triggerEvent('Content', {
- content: e.detail
- })
- },
- setHtml(html) { //回显
- if (html) {
- this.createSelectorQuery().select('#editor').context((res) => {
- this.editorCtx = res.context
- this.editorCtx.setContents({
- html,
- fail: (err) => {
- console.log(`内容回显失败:${err}`);
- }
- })
- }).exec()
- }
- },
- }
- })
|