Vue3中jsoneditor的使用示例详解

 更新时间:2024年01月11日 16:42:24   作者:Mrceel  
这篇文章主要为大家详细介绍了Vue3中jsoneditor的使用相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解下

vue3 使用 jsoneditor

复制代码放到文件中就能用了

jsoneditor.vue

<template>
    <div ref="jsonDom" style="width: 100%; height: 460px"></div>
</template>
<script setup lang="ts">
import { ref, onMounted, watchEffect } from 'vue'
import JsonEditor from 'jsoneditor'
interface validateResult {
    path: Array<string | number>
    message: string
}
const props = defineProps<{
    option: any
    validate?: (val: any) => validateResult
}>()
const emit = defineEmits(['update:modelValue', 'change', 'customValidation'])

const jsonDom = ref(null)
const validate = (res: any, editor: any) => {
    try {
        emit('change', {
            success: res.length === 0 && typeof editor.get() !== 'number',
            json: editor.getText()
        })
    } catch (error) {
        console.log(error)
    }
}
onMounted(() => {
    const options = {
        history: false,
        sortObjectKeys: false,
        mode: 'code',
        modes: ['code', 'text'],
        onChange() {
            editor.validate().then((res: any) => validate(res, editor))
        },
        onBlur() {
            try {
                editor.set(eval(`(${editor.getText()})`))
                editor.validate().then((res: any) => validate(res, editor))
            } catch (error) {
                console.log(error)
            }
        },
        onValidate: props.validate,
        onValidationError: function (errors: any) {
            errors.forEach((error: any) => {
                switch (error.type) {
                    case 'validation': // schema validation error
                        break
                    case 'customValidation': // custom validation error
                        emit('customValidation')
                        break
                    case 'error': // json parse error
                        emit('change', {
                            success: false,
                            json: editor.getText()
                        })
                        break
                }
            })
        }
    }
    const editor = new JsonEditor(jsonDom.value, options)
    watchEffect(() => {
        editor.set(props.option)
        editor.validate().then((res: any) => validate(res, editor))
    })
})
</script>

到此这篇关于Vue3中jsoneditor的使用示例详解的文章就介绍到这了,更多相关Vue3 jsoneditor内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue多种弹框的弹出形式的示例代码

    vue多种弹框的弹出形式的示例代码

    本篇文章主要介绍了vue多种弹框的弹出形式的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue-cli3脚手架安装方法

    vue-cli3脚手架安装方法

    这篇文章主要介绍了vue-cli3脚手架安装方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • el-select如何获取下拉框选中label和value的值

    el-select如何获取下拉框选中label和value的值

    在开发业务场景中我们通常遇到一些奇怪的需求,例如el-select业务场景需要同时获取我们选中的label跟 value,下面这篇文章主要给大家介绍了关于el-select如何获取下拉框选中label和value的值,需要的朋友可以参考下
    2022-10-10
  • 深入理解Vue官方文档梳理之全局API

    深入理解Vue官方文档梳理之全局API

    本篇文章主要介绍了深入理解Vue官方文档梳理之全局API,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 在Vue3中创建和使用自定义指令的实现方式

    在Vue3中创建和使用自定义指令的实现方式

    在现代前端开发中,Vue.js 是一个非常流行的框架,它提供了许多强大的功能来帮助开发者构建高效的用户界面,自定义指令是 Vue.js 的一个重要特性,它允许开发者扩展 HTML 元素的功能,本文将详细介绍如何在 Vue3 中创建和使用自定义指令,并提供示例代码来帮助理解
    2024-12-12
  • 前端Vue学习之购物车项目实战记录

    前端Vue学习之购物车项目实战记录

    购物车是电商必备的功能,可以让用户一次性购买多个商品,下面这篇文章主要给大家介绍了关于前端Vue学习之购物车项目的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • vue组件间传值的方法你知道几种

    vue组件间传值的方法你知道几种

    这篇文章主要为大家详细介绍了vue组件间传值的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Vue3时间轴组件问题记录(时间信息收集组件)

    Vue3时间轴组件问题记录(时间信息收集组件)

    本文介绍了如何在Vue3项目中封装一个时间信息收集组件,采用双向绑定响应式数据,通过对Element-Plus的Slider组件二次封装,实现时间轴功能,解决了小数计算导致匹配问题和v-model绑定组件无效问题,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • VUE3子表格嵌套分页查询互相干扰的问题解决方案

    VUE3子表格嵌套分页查询互相干扰的问题解决方案

    这篇文章主要介绍了VUE3子表格嵌套分页查询互相干扰的问题解决方案,如果不需要做子表格的分页查询,那么可以直接在主表格中嵌套子表格,本文给大家介绍两种方式,需要的朋友可以参考下
    2024-01-01
  • element UI upload组件上传附件格式限制方法

    element UI upload组件上传附件格式限制方法

    今天小编就为大家分享一篇element UI upload组件上传附件格式限制方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论