vue集成kindeditor富文本

指令

該指令的做用是dom渲染後觸發,由於非vue的插件有的是dom必須存在的狀況下才能夠執行css

Vue.directive('loaded-callback', {
  inserted: function (el, binding, vnode) {
    binding.value(el, binding, vnode)
  }
})

安裝kindeditor

npm install kindeditor

kindeditor組件

<template>
  <div class="kindeditor">
    <textarea class="form-control" ref="kindeditor" v-model="localValue" name="content" v-loaded-callback='initKindeditor'></textarea>
  </div>
</template>

<script>
import '../../../../../node_modules/kindeditor/kindeditor-all.js'
import '../../../../../node_modules/kindeditor/lang/zh-CN.js'
import '../../../../../node_modules/kindeditor/themes/default/default.css'
export default {
  name: 'kindeditor',
  props: ['options', 'value'],
  data () {
    return {
      localValue: ''
    }
  },
  watch: {
    localValue: 'updateValue',
    value: 'setDefault'
  },
  created () {
    this.setDefault()
  },
  methods: {
    initKindeditor () {
        var _this = this
        // 默認參數
        var options = {
            uploadJson: 'upload/image',
            width: '100%',
            afterChange () {
                _this.localValue = this.html()
            }
        }
        // 調用外部參數
        if (_this.options) {
            for(var i in _this.options){
                options[i] = _this.options[i]
            }
        }
        KindEditor.create(_this.$refs.kindeditor,options);
    },
    // 設置初始值
    setDefault () {
      this.localValue = this.value
    },
    // 修改父件的值
    updateValue () {
      this.$emit('input',this.localValue)
    }
  }
}
</script>

用法

<kindeditor :options="options" v-model="content"></kindeditor>

options參考

http://kindeditor.net/docs/op...html

相關文章
相關標籤/搜索