由于 vue 中使用默认的 json-editor 组件不能调整对应样式,项目中 UI 库使用的为 Element UI 。后来找到一个 vue-ui-json-editor
库,对应 Element UI 样式。官方的效果如下:
Install
npm install vue-json-ui-editor --save
Use
<template>
<json-editor ref="JsonEditor" :schema="schema" v-model="model">
<button @click="submit">submit</button>
<button @click="reset">Reset</button>
</json-editor>
</template>
<script>
const SCHEMA = {
type: 'object',
title: 'vue-json-editor demo',
properties: {
name: {
type: 'string',
},
email: {
type: 'string',
},
},
};
// import vue-json-ui-editor
import JsonEditor from '../../src/JsonEditor.vue';
export default {
components: { JsonEditor },
data: () => ({
// init json schma file ( require('@/schema/newsletter') )
schema: SCHEMA,
// data
model: {
name: 'Yourtion',
},
}),
methods: {
submit(_e) {
alert(JSON.stringify(this.model));
},
reset() {
this.$refs.JsonEditor.reset();
},
},
};
</script>
可以直接 clone
vue-ui-json-editor
官方仓库 查看效果效果
提示
vue-ui-json-editor
官方的例子中一些输入组件验证不太完善,如 number
类型组件的上下限验证等,需根据项目实际情况自行调整。
修改组件上下限调整,可以参考这里。