vue-json-editor json编辑器的使用

 更新时间:2022年07月22日 11:41:08   作者:短暂又灿烂的  
本文主要介绍了vue-json-editor json编辑器的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、概述

现有一个vue项目,需要一个json编辑器,能够格式化json数据,同时也支持编辑功能。

vue-json-editor 插件就可以实现这个功能

二、vue-json-editor 使用

安装插件

npm install vue-json-editor --save

使用

test.vue

<template>
  <div style="width: 70%;margin-left: 30px;margin-top: 30px;">
    <vue-json-editor
      v-model="resultInfo"
      :showBtns="false"
      :mode="'code'"
     
      @json-change="onJsonChange"
      @json-save="onJsonSave"
      @has-error="onError"
    />
    <br>
    <el-button type="primary" @click="checkJson">确定</el-button>
  </div>
</template>
 
<script>
  // 导入模块
  import vueJsonEditor from 'vue-json-editor'
 
  export default {
    // 注册组件
    components: { vueJsonEditor },
    data() {
      return {
        hasJsonFlag:true,  // json是否验证通过
        // json数据
        resultInfo: {
          'employees': [
            {
            'firstName': 'Bill',
            'lastName': 'Gates'
            },
            {
              'firstName': 'George',
              'lastName': 'Bush'
            },
            {
              'firstName': 'Thomas',
              'lastName': 'Carter'
            }
          ]
        }
      }
    },
    mounted: function() {
    },
    methods: {
      onJsonChange (value) {
        // console.log('更改value:', value);
        // 实时保存
        this.onJsonSave(value)
      },
      onJsonSave (value) {
        // console.log('保存value:', value);
        this.resultInfo = value
        this.hasJsonFlag = true
      },
      onError(value) {
        // console.log("json错误了value:", value);
        this.hasJsonFlag = false
      },
      // 检查json
      checkJson(){
        if (this.hasJsonFlag == false){
          // console.log("json验证失败")
          // this.$message.error("json验证失败")
          alert("json验证失败")
          return false
        } else {
          // console.log("json验证成功")
          // this.$message.success("json验证成功")
          alert("json验证成功")
          return true
        }
      },
    }
  }
</script>
 
<style>
</style>

插件参数说明:

<vue-json-editor
      v-model="resultInfo"  // 绑定数据resultInfo
      :showBtns="false"  // 是否显示保存按钮
      :mode="'code'"  // 默认编辑模式
       // 显示中文,默认英文
      @json-change="onJsonChange"  // 数据改变事件
      @json-save="onJsonSave"  // 数据保存事件
      @has-error="onError"  // 数据错误事件
    />

相关说明:

resultInfo  默认绑定的变量,这个变量可以为空,编辑器会显示为{}

:showBtns 这里不显示保存按钮,为什么呢?原因有2个。1. 默认样式不好看。2. 只能当json数据正确,才能点击保存按钮,否则禁止点击。

json-change,json-save,has-error 这3个事件,是会实时触发的。

这里我额外加了一个检测方法,用来判断json数据是否正确。默认标记为true,当不正确时,会改变状态为false。

访问

点击确定,提示成功

 改为错误的,点击确定,会提示失败。

注意:这个json编辑会带有下来菜单,实际项目中,需要去除,比较用户误操作。

在实际使用中发现几个问题:

1. 输入中文时,传给后端的值不多

2. 输入大量json时,会有部分数据丢失。

因此,我们使用下面的编辑器bin-code-editor 

三、bin-code-editor

安装模块

npm install bin-code-editor -d

引入

在 main.js 中写入2行

import CodeEditor from 'bin-code-editor';
Vue.use(CodeEditor);

test.vue

<template>
  <div style="width: 70%;margin-left: 30px;margin-top: 30px;">
    <b-code-editor v-model="jsonStr" :auto-format="true" :smart-indent="true" theme="dracula" :indent-unit="4" :line-wrap="false" ref="editor"></b-code-editor>
    <br>
    <el-button type="primary" @click="onSubumit">提交</el-button>
  </div>
</template>
 
<script>
  const jsonData =`{
    "employees": [{
      "firstName": "Bill",
      "lastName": "Gates"
    }, {
      "firstName": "George",
      "lastName": "Bush"
    }, {
      "firstName": "Thomas",
      "lastName": "Carter"
    }]
  }`
  export default {
    data() {
      return {
        jsonStr:jsonData
      }
    },
    methods: {
      // 检测json格式
      isJSON(str) {
        if (typeof str == 'string') {
          try {
            var obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
              return true;
            }else{
              return false;
            }
 
          } catch(e) {
            return false;
          }
        }else if (typeof str == 'object'  && str) {
          return true;
        }
      },
      onSubumit(){
        if (!this.isJSON(this.jsonStr)){
          this.$message.error(`json格式错误`)
          return false
        }
        this.$message.success('json格式正确')
      }
    }
  }
</script>
 
<style>
 
</style>

访问测试页面,效果如下:

输入错误的值,点击执行,会有提示

到此这篇关于vue-json-editor json编辑器的使用的文章就介绍到这了,更多相关vue  json编辑器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue+elementUI配置表格的列显示与隐藏

    vue+elementUI配置表格的列显示与隐藏

    这篇文章主要为大家详细介绍了vue+elementUI配置表格的列显示与隐藏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解如何使用webpack在vue项目中写jsx语法

    详解如何使用webpack在vue项目中写jsx语法

    本篇文章主要介绍了详解如何使用webpack在vue项目中写jsx语法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 在VUE中使用lodash的debounce和throttle操作

    在VUE中使用lodash的debounce和throttle操作

    这篇文章主要介绍了在VUE中使用lodash的debounce和throttle操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vuejs实现标签选项卡动态更改css样式的方法

    vuejs实现标签选项卡动态更改css样式的方法

    这篇文章主要介绍了vuejs实现标签选项卡-动态更改css样式的方法,代码分为html和js两部分,需要的朋友可以参考下
    2018-05-05
  • Vue如何将当前窗口截图并将数据base64转为png格式传给服务器

    Vue如何将当前窗口截图并将数据base64转为png格式传给服务器

    这篇文章主要介绍了Vue如何将当前窗口截图并将数据base64转为png格式传给服务器,通过实例代码介绍了将当前窗口截图,并将数据存储下来,需要的朋友可以参考下
    2023-10-10
  • vue+springboot上传大文件的实现示例

    vue+springboot上传大文件的实现示例

    本文主要介绍了vue+springboot上传大文件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Vue Vuex搭建vuex环境及vuex求和案例分享

    Vue Vuex搭建vuex环境及vuex求和案例分享

    这篇文章主要介绍了Vue Vuex搭建vuex环境及vuex求和案例分享, Vue 中实现集中式状态管理的一个 Vue 插件,对 vue 应用中多个组件的共享状态进行集中式的管理,下文相关介绍,需要的朋友可以参考一下
    2022-04-04
  • vue-scroller记录滚动位置的示例代码

    vue-scroller记录滚动位置的示例代码

    本篇文章主要介绍了vue-scroller记录滚动位置的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 详解Vue项目在其他电脑npm run dev运行报错的解决方法

    详解Vue项目在其他电脑npm run dev运行报错的解决方法

    这篇文章主要介绍了详解Vue项目在其他电脑npm run dev运行报错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 详解Vue基于 Nuxt.js 实现服务端渲染(SSR)

    详解Vue基于 Nuxt.js 实现服务端渲染(SSR)

    直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于网站的 SEO,这时候就需要服务端渲染,本篇文章主要介绍了详解Vue基于 Nuxt.js 实现服务端渲染(SSR),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论