<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div class='container' id="demo"> <textarea v-model="content"></textarea> <div id="editor" v-ueditor="content" :config="config"></div> </div> <script src="http://apps.bdimg.com/libs/ueditor/1.4.3.1/ueditor.config.js"></script> <script src="http://apps.bdimg.com/libs/ueditor/1.4.3.1/ueditor.all.js"></script> <script src="http://apps.bdimg.com/libs/ueditor/1.4.3.1/lang/zh-cn/zh-cn.js"></script> <script src="http://cdn.bootcss.com/vue/1.0.17/vue.min.js"></script> <script type="text/javascript"> //http://vuejs.org.cn/guide/custom-directive.html Vue.directive('ueditor', { params: ['config'], twoWay: true, bind: function () { var self = this; this.el.id = 'ueditor' + new Date().getTime().toString() this.editor = UE.getEditor(this.el.id, this.params.config) this.editor.ready(function () { self.editorReady = true self.editor.addListener("contentChange", function () { self.set(self.editor.getContent()) }) self.update(self.vm.$get(self.expression)) }) }, update: function (newValue, oldValue) { if (this.editorReady) { this.editor.setContent(newValue) } }, unbind: function () { this.editor.destroy() } }) var vm = new Vue({ el: '#demo', data: function () { return { content: 'Hello Vue.js!', config: { toolbars: [ ['fullscreen', 'source', 'undo', 'redo', 'bold'] ] } } } }) </script> </body> </html>
1.0javascript
<template> <div v-el:editor></div> </template> <script> //<ueditor :value.sync="str" :config="config"></ueditor> module.exports = { props: { value: { type: String, default: null }, config: { type: Object, default: {} } }, ready() { let id = new Date().getTime().toString() this.$els.editor.id = id this.editor = UE.getEditor(id, this.config) this.editor.ready(function () { this.editor.setContent(this.value) this.editor.addListener("contentChange", function () { let s = this.editor.getContent() this.$set('value', s) }.bind(this)) this.$emit('ready', this.editor) }.bind(this)) } } </script>
2.0css
<template> <div ref="editor"></div> </template> <script> let guidGenerator = require('src/utils/guidGenerator') //<ueditor v-model="str" :config="config"></ueditor> module.exports = { props: { value: { type: String, default: null }, config: { type: Object, default: {} } }, mounted: function () { this.$nextTick(function () { // 保證 this.$el 已經插入文檔 let id = guidGenerator() this.$refs.editor.id = id this.editor = UE.getEditor(id, this.config) this.editor.ready(function () { this.editor.setContent(this.value) this.editor.addListener("contentChange", function () { this.$emit('input', this.editor.getContent()) }.bind(this)) this.$emit('ready', this.editor) }.bind(this)) }) } } </script>