下面分两个版本,我的项目用的是nuxt.js,是服务端渲染,有时候就会报一下window,document,语法等错误,这些包都需要在nuxt.config.js中配置一下
// 在plugins文件夹下创建vue-json-edotor.js
import Vue from 'vue';
import VueJsonEditor from 'vue-json-editor';
Vue.component('vue-json-editor', VueJsonEditor);
export default () => {
Vue.use(VueJsonEditor);
};
// 在nuxt.config.js中配置,这些包都要在服务端禁用
module.exports = {
plugins: [
{ src: '@/plugins/ace-builds', ssr: false },
{ src: '@/plugins/vue-json-pretty', ssr: false },
{ src: '@/plugins/vue-json-editor', ssr: false },
],
}
// 在vue文件中直接引入组件即可
<div class="flow-container">
<el-dialog :visible.sync="vueJsonEditorVisible">
<div class="route-management">
<vue-json-editor
v-model="procedure.values" // 放json数据
:show-btns="true"
:mode="'code'"
:key="vueJsonEditorKeys" // 每次点击让key变化,防止数据有误
lang="zh"
class="vue-json-editor"
@json-change="onJsonChange"
@json-save="onJsonSave"/>
</div>
</el-dialog>
</div>
methods: {
onJsonChange(value) {
console.log('value:', value);
},
onJsonSave(value) {
console.log('value:', value);
},
}
// 不要加scoped,不然不生效,但是也不会污染其他地方的样式,要在他的最外面包一层div取一个唯一的类名即可,高度根据自己的需求做调整
<style lang="less">
.flow-container {
.el-dialog__wrapper {
height: 100vh !important;
.el-dialog {
margin-top: 2vh !important;
height: 90vh !important;
.route-management {
height: 74vh !important;
.vue-json-editor {
height: 74vh !important;
}
.jsoneditor-vue {
height: 100% !important;
}
}
}
}
}
</style>
真的是见过最好的编辑器了,如果大家有更好的,希望留言给我,我去康康,谢谢啦