踩了很多坑最后写出来了,需要props里加属性自己加,css部分也是很关键的内容
引用后可以在父组件用class设置height
很多处理的灵感来源于vue2.0项目vue-json-editor的代码,原项目代码还是写的很精彩的
安装命令:npm install jsoneditor --save
原项目文档:https://github.com/josdejong/jsoneditor

<template><div><div class="json" /></div>
</template><script>
import JSONEditor from 'jsoneditor';export default {props: {name: String,modelValue: {type: [String, Number, Object, Array],default: () => {return {};}}},data() {return {jsonEditor: null,internalChange: false}},mounted() {this.init();},watch: {modelValue: {handler(json) {if (!this.internalChange) {this.setValue(json);}}}},methods: {init() {let self = this;this.jsonEditor = new JSONEditor(self.$el.querySelector(".json"), {mode: 'code',modes: ['code', 'view', 'tree'],indentation: 4,name: this.name,mainMenuBar: true,onModeChange() {// 去除作者信息if (document.getElementsByClassName('jsoneditor-poweredBy').item(0)) {document.getElementsByClassName('jsoneditor-poweredBy').item(0).remove();}},onChange() {self.internalChange = true;self.$emit('update:modelValue', self.jsonEditor.getText());// 防止双向绑定重复刷新数据self.$nextTick(function () {self.internalChange = false;});}}, self.modelValue);// 去除作者信息document.getElementsByClassName('jsoneditor-poweredBy').item(0).remove();},setValue(jsonStr) {if (this.jsonEditor) {this.jsonEditor.set(jsonStr ? JSON.parse(jsonStr) : '');}}}
};
</script><style>
@import '~jsoneditor/dist/jsoneditor.min.css';.json {height: 100%;
}.jsoneditor {border: thin solid #409EFF;
}.jsoneditor-menu {background-color: #409EFF;
}.ace-jsoneditor {min-height: 50px;
}
</style>

引入,省略import部分

<json-editor class="json" name="body" v-model="bodyJson"></json-editor>

vue3.0实现jsoneditor组件相关推荐

  1. vue3.0(第九篇)vue3.0可用的组件库

    1.Elemnet UI 推出Element Plus 源码地址 https://github.com/element-plus/element-plus 官方网站 https://element-p ...

  2. html任务3 模拟滚动条,vue3系列:vue3.0自定义虚拟滚动条V3Scroll|vue3模拟滚动条组件...

    /** * @Desc Vue3.0虚拟滚动条组件V3Scroll * @Time andy by 2021-01 * @About Q:282310962 wx:xy190310*/ props: ...

  3. Vue3.0中emit的使用

    文章目录 一.emit是什么? 二.Vue 2.0和3.0的使用区别 一.emit是什么? emit的主要作用是子组件可以通过使用 emit,让父组件监听到自定义事件 ,以及传递的参数 二.Vue 2 ...

  4. vue3.0中使用Element-plus默认英文组件修改为中文

    vue3.0中使用Element-plus默认英文组件修改为中文修改方法 说明:本方法Element-plus 1.0.2-beta.59 之前的版本可以,1.0.2-beta.59之后版本请看下一篇 ...

  5. vue3.0 组件使用 引用 传值 父传子 子传父

    vue3.0 组件使用 引用 传值 父传子 子传父 组件的创建 组件引入 在html中使用 组件传值 父传子 子接收参数 子传父 父接收参数 组件的创建 1.将所需功能封装在components目录下 ...

  6. Vue3.0实现原生高度可自定义菜单组件vue3-menus

    vue3-menus Vue3.0 自定义右键菜单 Vue3.0 原生实现完全自定义右键菜单组件, 零依赖,可根据可视区域自动调节显示位置,可支持插槽完全重写每一项菜单 项目地址 GitHub Git ...

  7. vue3.0 组件传值

    vue3.0组件传值 子组件 代码如下(示例): <template><p @click="handle">{{ test }}</p> < ...

  8. 【Vue3.0实战逐步深入系列】扩展投票功能基于elementui进行组件封装实现一个简单的问卷调查功能

    [千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.在前面一偏文章中我们把投票功能进行了简单的改造:引入了axios第三方库并进行了二次封装用于模拟请求服务器数据.同时添加了一 ...

  9. Vue3.0实践:使用Vue3.0做JSX(TSX)风格的组件开发

    前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React Hooks以后. 不可否认React Hooks极大地方便了开发者,但是它又有非常多反直觉的地方, ...

  10. vue3.0中找不到组件 或者找不到对应的类型声明。怎么解决

    vue3.0中找不到组件 或者找不到对应的类型声明如何解决? 这里报错 .报错原因 报错就是ts影响 找不到组件模块或者找不到对应的类型声明 typescript 只能理解 .ts 文件,无法理解 . ...

最新文章

  1. UI设计培训中的扁平化理念
  2. wpa_supplicant 详解(9) - 4 way handshake
  3. Linux Socket学习(十八)--完
  4. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...
  5. javafx 推箱子小游戏object类_突破LeetCode Hard模式之《推箱子》
  6. ZOJ1101-赌徒【二分查找】
  7. 值得推荐的威胁情报平台
  8. 谷歌将推出新版Pixel 4a 5G:搭载骁龙765G处理器 售价下降至3200元
  9. Windows 10 IoT Core 17115 for Insider 版本更新
  10. js 字符串去除空格
  11. 技术中心部门薪酬和考核体系
  12. Eclipse注释模板与规范
  13. 越狱Season 1-Episode 9: Tweener
  14. Java期末考试试题及参考答案(01)
  15. Jrebel、IDEA的激活与Springloaded使用
  16. adb为Android的root方法,Android 实现永久性开启adb 的root权限
  17. 互联网寒冬,如何花三个月东山再起........
  18. wipe、root、底包、rsd是什么意思?小白入门释义
  19. 摘自《机器视觉技术》陈兵旗—机器视觉的功能与精度
  20. gmt java date_关于日期:以Java获取GMT时间

热门文章

  1. STM32官方USB库下载指南
  2. DIY智能小车篇(四):常见问题 BUG汇总
  3. steam怎么看邮箱绑定的账号_【一问一答】账号篇丨账号密码忘记了怎么办?不方,看这里!...
  4. jdk动态代理的实现流程(事务处理)
  5. 大数据面试题及答案-汇总版
  6. 使用pytorch实现crnn
  7. Eclipse 使用的注意 灵格斯 取词
  8. 改变CSS世界纵横规则的writing-mode属性
  9. NLP - snownlp
  10. android添加本地视频播放器,找到令人满意的Android本地视频播放器是如此困难吗?...