一、概述

现有一个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编辑器内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

vue-json-editor json编辑器的使用的更多相关文章

  1. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. html+js 实现markdown编辑器效果

    这篇文章主要介绍了html+js 实现markdown编辑器效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. 从xcode ios中删除未使用的方法

    我正在使用带有目标c的xcode9.我想从类中删除未使用的变量和方法.我也使用这种方式,但xcode不警告未使用的方法等.如何找出?

  4. 将Emacs与Xcode 4一起使用?

    如果出于某种原因Apple疯狂并从Xcode中删除了这个功能,有没有办法从Emacs中编辑xcodeproj,以及构建和使用iPhone模拟器?

  5. 如何在Xcode 4.4.1中的Core Data Model编辑器中完全删除实体描述

    用户界面中只存在“添加实体”按钮.解决方法>突出显示要删除的实体.>按退格键(删除)键.

  6. 在XCode中禁用Word-Wrap

    我想在XCode中禁用Word-Wrap“功能”.可以这样做吗?

  7. Xcode数据模型编辑器不出现

    解决方法我遇到了一个类似的问题.问题是项目目录结构及其在XCode中的配置方式.更多细节:XCodeCant’EditCoreDataModel

  8. xcode4 – 如何关闭分割窗口/相邻编辑器 – Xcode 4

    我通过玩Xcode4中的菜单进行管理,在相邻编辑器中打开一个窗口.不幸的是,我无法找出如何关闭该窗口.你如何做到这一点?解决方法我通过转到’view>编辑>标准“,并将视图重置为标准的一个窗口视图.我还没弄清楚为什么新窗口右上角的x是灰色的.不是一个完美的解决方案,而是解决方案

  9. osx – Xcode 8扩展在编辑器菜单中不可见

    谢谢您的帮助.解决方法我想到了.默认情况下,项目未签名.单击项目并转到常规设置,然后在macOS应用程序和扩展程序目标上选择启用开发签名修复问题.

  10. 如何解决XCode滑动手势去上一个/下一个文件冻结编辑器?

    从今天早上起,我在小牛的XCode5中面临着一个非常烦人的bug:我用来从左到右用两根手指在MacBook触控板上滑动,以前往/下一个文件进入XCode编辑器.但是,现在,这样做完全冻结了编辑器,刚刚移动了像5像素的东西.之后,我必须关闭XCode并重新打开它,使编辑器重新工作.按下上一个/下一个按钮,因为它不会触发这个错误的动画.有没有人有这个问题或有任何线索来解决它?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部