該指令的做用是dom渲染後觸發,由於非vue的插件有的是dom必須存在的狀況下才能夠執行css
Vue.directive('loaded-callback', { inserted: function (el, binding, vnode) { binding.value(el, binding, vnode) } })
npm install 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>